语法:
CREATE OR REPLACE TRIGGER '触发器名称'
AFTER/BEFORE INSERT OR UPDATE OR DELETE -- 1
ON '表名' -- 2
REFERENCING OLD ROW AS OLD NEW ROW AS NEW -- 3
FOR EACH ROW -- 4
BEGIN -- 5
--插入语句
IF INSERTING THEN
INSERT INTO
tablename (field1, field2, field3)
VALUES
(:NEW.field1, :NEW.field2, :NEW.field3);
--更新语句
ELSEIF UPDATING THEN
UPDATE
tablename
SET
field1 = :NEW.field1, field2 = :NEW.field2
WHERE
field3 = :OLD.field3;
END IF;
--删除语句
IF DELETING THEN
DELETE FROM
tablename
WHERE
field1 = :OLD.field1;
END IF;
END;
1)、
AFTER / BEFORE
:在语句执行之前还是执行之后
BEFORE
:INSERT / UPDATE
可以修改NEW
数据
AFTER
:不可以修改NEW
数据
BEFORE
和AFTER
都不可以修改OLD
数据
2)、 目的表名
3)、 为OLD ROW
和NEW ROW
设置别名
4)、 行级触发器,每有一行数据发生变化,就执行一次触发器
5)、NEW
:只有INSERT、UPDATE
语句才有
表示新添加、更新后
的新数据
OLD
:只有UPDATE、DELETE
语句中才有
表示更新前、删除前
前的旧数据
在BEGIN ... END;
语句块中,使用NEW、OLD
需要在前面加上冒号(:NEW、:OLD
)