2014-12-15 2 views
-4
DROP TABLE a CASCADE CONSTRAINTS; 

CREATE TABLE a(
    cyear VARCHAR2(4)); 

CREATE TRIGGER current_year 
BEFORE INSERT ON cyear 
    FOR EACH ROW SET NEW.year = year(NOW()); 

EDIT:неверная спецификация триггер в оракула

Я попробовал это,

CREATE TRIGGER current_year 
    BEFORE INSERT ON a 
    FOR EACH ROW 
BEGIN 
    :NEW.cyear = TO_CHAR(SYSDATE, 'YYYY'); 
END current_year; 

я получаю ошибку PLS-00103.

+0

': NEW.cyear: = TO_CHAR (SYSDATE , 'YYYY'); '. Это не '=', а ': =' для присваивания. –

ответ

1
  1. Trigger создан на столах, а не на колонках
  2. В переменных Oracle не назначен с SET
  3. Там нет функции встроенной называется NOW в Oracle
  4. NEW и OLD доступны только в WHEN оговорка; в других местах, где они должны предшествовать двоеточие (:NEW, :OLD)
  5. END ключевое слово пропущено в конце (и BEGIN в начале тела триггера)
Смежные вопросы