CREATE TRIGGER语法
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
触发程序与命名为tbl_name的表相关。
trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。
trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。
trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:
·
·
·
trigger_stmt是当触发程序激活时执行的语句。如果你打算执行多个语句,可使用BEGIN ... END复合语句结构。
MySQL数据库创建触发器的格式如下:
create trigger <触发器名称> { before | after} {insert | update | delete} on <表名> for each row <触发器SQL语句> |
create trigger <触发器名称>:创建一个新触发器,并指定触发器的名称。
{ before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。
on <表名>:用于指定响应该触发器的表名。
for each row:触发器的执行间隔,for each row 通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。
查看数据库中的触发器
SELECT * FROM information_schema.`TRIGGERS`;
删除触发器
drop trigger 触发器名字
实例1
create TRIGGER testtrigger //创建一个testtrigger触发器
before insert on test //在test表inser动作之前
for each row
insert into `test_trigger`(num) values(1); //向test_trigger表插入一条数据
实例2
create trigger testtrigger //创建一个testtrigger触发器
before insert on test //在test表inser动作之前
for each ROW
begin
insert into `test_trigger`(num) values(1); //执行多条附加语句,使用begin......end;语句包起来
insert into thing1(name,age) value("czh",23);
END;