触发器简介
触发器(TRIGGER)是由事情来触发某个操作。这些事情包含INSERT句子、UPDATE句子和DELETE句子。当数据库体系履行这些事情时,会激活促发其履行相应的操作。
触发器的界说便是说某个条件建立的时分,触发器里边所界说的句子就会被主动的履行。
因而触发器不需求人为的去调用,也不能调用。
然后,触发器的触发条件其实在你界说的时分就现已设定好了。
这里边需求阐明一下,触发器能够分为句子级触发器和行级触发器。
具体的介绍能够参阅网上的材料,简略的说便是句子级的触发器能够在某些句子履行前或履行后被触发。而行级触发器则是在界说的了触发的表中的行数据改动时就会被触发一次。
具体举例:
1、 在一个表中界说的句子级的触发器,当这个表被删去时,程序就会主动履行触发器里边界说的操作过程。这个便是删去表的操作便是触发器履行的条件了。
2、 在一个表中界说了行级的触发器,那当这个表中一行数据发生变化的时分,比方删去了一行记载,那触发器也会被主动履行了。
创立与运用触发器:
2.1创立只要一个履行句子的触发器
例:创立一个trig_book触发器,该触发器在表t_book刺进一条数据后,对表t_bookType的bookNum数量对应的bookTypeId会主动加
1
create trigger trig_book after insert
on t_book for each row
update t_bookType set bookNum = bookNum+1 where new.bookTypeId = t_booktype.id;
INSERT INTO t_book VALUES(NULL,‘java好’,100,‘ke’,1);
t_book表:
t_bookType表:
2.1创立有多个履行句子的触发器
比如:
DELIMITER | 数据库句子 | DELIMITER;//告知数据库这时一条句子内容
new old 触发的两个过度变量;new:新增一条句子的新增目标;old:删去一条句子的删去目标;
DELIMITER |
create trigger trig_book2 after delete
on t_book for each row
begin
update t_bookType set bookNum = bookNum-1 where old.bookTypeId=t_booktype.id;
insert into t_log values(null,NOW(),‘在book表里删去了一条数据’);
delete from t_test where old.bookTypeId = t_test.id;
end
|
DELIMITER ;
DELETE FROM t_book WHERE id=5;
三、检查触发器
3.1SHOWTRIGGERS 句子检查触发器信息
SHOW TRIGGERS;
3.2 在 triggers 表中检查触发器信息
DROP TRIGGER trig_book2 ;
触发器完成原理
上图具体解说了,当操作表进行刺进、删去、更新时触发器针对暂时表inserted和deleted的操作。并留意最一句话:触发器履行屡次但只会保存最终一次成果!!