MySQL触发器(TRIGGER)使用说明

MySQL触发器(TRIGGER)使用说明
触发器程序是与表有关的命名数据库对象,表上出现特定事件时,将激活该对象。Mysql5之后开始支持触发器,并且在创建触发器后会自动在/var/lib/mysql目录下生成TRG以及TRN文件(Linux下),必须拥有足够的权限才能创建触发器。

createtrigger<触发器名称>
{before|after}
{insert|update|delete}
on<
表名>
foreachrow
<
触发器SQL语句>
参数详解如下:
createtrigger<触发器名称>:创建一个新触发器,并指定触发器的名称,最多64个字符。
{before|after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。

{insert|delete|update}:触发事件
on<表名>:用于指定响应该触发器的表名。
foreachrow:触发器的执行间隔,foreachrow通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。
如:begin…end

MySQL语句示例:
sqlstr("
createtriggeruser_delete
afterdelete
onuser
foreachrow

BEGIN
deletefromuser_bakwhereid=old.id;
deletefromaaawhereid=old.id;
END;");

MySQL命令行下创建触发程序,实例1

delimiter//#将MySQL命令行分割符修改为“//”,默认为";",在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。
createTRIGGERtestrefbeforeINSERTontest1
foreachrow

BEGIN
insertintotest2seta2=new.a1;
deletefromtest3wherea3=new.a1;
updatetest4setb4=b4+1wherea4=new.a1;
END//
delimiter;#
将MySQL命令行默认分割符恢复为";"

示例2

droptriggercommon_member_insert;//如果触发器member_update存在则删除
delimiter|
createtriggercommon_member_insert
afterinsert
on`member`.`common_member`

foreachrow
begin
insertinto
`web`.`common_member`(`uid`,`email`,`username`,`password)values(new.uid,new.email,new.username,new.password);
end|
delimiter;
说明:当member数据库库下的common_member数据表更新,则触发该事件把数据同步更新到web数据库下common_member表中。简单说就是当member数据库库下的common_member数据表更新时同步更新web数据库下common_member表。

可以在mysql的命令行模式下创建触发器,也可以利用mysql管理软件创建,常见的有:
1、SQLyog(连接本机数据库成功后,我们可以在数据表上右击选择“CreateTrigger…”或右键Triggers,选择CreateTrigger…,这里不再过多赘述,适合windows系列系统)
2、Navicat(选择数据表--设计表--触发器,这里不再过多赘述,适合windows系列系统)

你可能感兴趣的:(数据库,mysql)