1、触发器:trigger,在sql insert update delete命令之前(before)或之后(after)之后执行该触发。
2、语法:
create trigger trigger_name
before|after
insert|update|delete
on table_name
for each row
code
3、如何访问当前记录的各个字段
OLD.column_name(返回一条现有记录在被修改或删除之前的内容 UPDATE DELETE)
NEW.column_name(返回一条新记录或被修改记录的新内容 INSERT UPDATE)
4、实例
目录表:tv_dir(id,name,xcount) 目录明细表:tv_dir_detail(id,dir_id,tv_id)
实现这样的一个功能:在目录明细表中添加一条记录或插入一条记录时,修改目录表中的xcount。
create trigger tv_dir_detail_insert
after insert on tv_dir_detail for each row
update tv_dir set xcount=xcount+1 where id=NEW.dir_id
create trigger tv_dir_detail_delete
after delete on tv_dir_detail for each row
update tv_dir set xcount=xcount-1 where id=OLD.dir_id
5、注意:
a。触发器的表必须是实表。不能是视图。
b。一个表最多定义6个触发器
c。受触发器影响的记录都执行一遍
6、在Navicat中定义触发器。
选中一张表,右击“设计表”,然后表设计中选择触发器。然后在下列表中输入名,选择After|before,选择(插入|刷新|删除)
然后在定义中写code。