触发器
触发器的器就是绑定一组SQL语句,触发器的触发就是在某一时刻,某一对象,的某个范围上发生某一事件时,执行触发器绑定的那一组SQL语句。
某一时刻:before、after
某一事件:insert、update、delete
某一对象:某个表
某个范围:记录或表
一个表上最多可以设置6个触发器
创建触发器
语法:
第1步:更改结束符
delimiter 符号
第2步:定义触发器
create triggers 触发器名 时刻 事件 on 对象 【for each row】;
create triggers 触发器名 before|after insert|delete|update on 表 字段名 【for each row】;
begin
-- sql语句
end
//
第3步:更改结束符
delimiter ;
需求:
一个定单表,库存表
创建触发器
查看触发器
语法:
show triggers;
查看触发器创建的语句
show create trigger 触发器名
示例:
触发器的使用:
触发器的记录
当触发器执行时,对触发的表的记录进行操作时,会进行相应记录;操作之前会记录在一个对象上(old或:old),操作之后也会记录一个对象(new或:new)。
操作: old new
insert null 新的记录
update 原记录信息 新记录的信息
delete 原记录信息 null
如何获取原记录或新记录的字段信息?
语法:
old或new.字段名
old.id old.num
new.id new.num
示例:
操作:
【for each row】表示每一行都会触发一次。
触发触发器的sql可能一次更改多条记录。for each row表示每产生或更新一条记录触发器执行一次。如果省略,表示无论更改多少条记录,只触发一次。
删除触发器
drop trigger 触发器名