触发器是与表有关的数据库对象,在满足条件时触发,并执行触发器中定义的语句集合.
触发器可以协助应用在数据库端确保数据的完整性.
1.创建触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_stmt
注:触发器只能创建在永久表(Permanent Table)上;不能对临时表(Temporary Table)创建触发器.
其中,trigger_time :
BEFORE | AFTER
trigger_event:
INSERT | UPDATE | DELETE
MySQL中,对同一个表相同触发时机的相同触发事件,只能定义一个触发器.如果是不同字段,则通过逻辑判断来处理;而Oracle这种,可以对不同字段的相同事件进行定义不同的触发器.
通过NEW / OLD 来引用触发器中发生变化的记录内容.
目前触发器只支持行级触发器,不支持语句级触发器.
Demo1:
DELIMITER $$
CREATE TRIGGER ins_film
AFTER INSERT ON film FOR EACH ROW
BEGIN
INSERT INTO film_text(film_id,title,description)
VALUES(new.film_id , new.title , new.description);
END ;
$$
DELIMITER ;
对于INSERT INTO .. ON DUPLICATE KEY UPDATE .. 语句来说,触发触发器的顺序可能会造成疑惑.
Demo2:
--