CREATE [OR REPLACE] TRIGGER trigger_name
{ BEFORE | AFTER | INSTEAD OF }
{ INSERT | DELETE | UPDATE [ OF columns] } または
{ INSERT OR UPDATE OR DELETE } など
ON event_tablename
[ REFERENCING OLD AS old_alias NEW AS new_alias PARENT AS parent_alias ]
[ FOR EACH ROW ]
[ WHEN (condition) ]
{ PL/SQL ブロック | CALL procedure_statement }
PL/SQL ブロック
[ DECLARE ]
BEGIN
statements ...
END;
行トリガーの作成例
-- CREATE TABLE RIVUS.TEXT_BOOK(A_TEXT VARCHAR2(80));--
CREATE OR REPLACE TRIGGER RIVUS.TEXT_BOOK_TRG
BEFORE INSERT OR DELETE OR UPDATE OF A_TEXT
ON RIVUS.TEXT_BOOK
FOR EACH ROW WHEN (NEW.A_TEXT IS NOT NULL) -- ← 行トリガー (FOR EACH ROW)
DECLARE -- ← IS / AS でなく DECLARE
eSample EXCEPTION;
BEGIN
IF (INSERTING) THEN
-- INSERT 時 :OLD は NULL
:NEW.A_TEXT := 'ABC';
END IF;
IF (UPDATING) THEN
-- UPDATE 時 :OLD :NEW ともセットされる
:NEW.A_TEXT := :OLD.A_TEXT || '→' || :NEW.A_TEXT;
END IF;
IF (DELETING) THEN
-- DELETE 時 :NEW は NULL
NULL;
END IF;
END;
/