可以针对insert,update,delete的执行前,执行后分别创建6种事件触发器,不可以对select创建。
before insert/update/delete;
after insert/update/delete;
for each row
update other_table_name set data=xxx;
for each row
update other_table_name set col_name = col_name + old.col - new.col;
*before/after insert 只能使用new,没有old
*before/after delete只能使用old,没有new
create trigger trigger_name after update on table_name
for each row
begin
update other_table_name set col_name = 1;
update other_table_name2 set col_name2 = 1;
end
$$
delimiter ; /* 修改完后将语句分隔符还原 */
*注意事项
1.mysql只支持一个事件一个触发器。即after update绑定了一个触发器后,不可再绑定另一个。
如果想执行多个功能,则使用语句块(begin,end)来实现。
before insert/update/delete;
after insert/update/delete;
1.创建触发器
create trigger trigger_name after update on table_namefor each row
update other_table_name set data=xxx;
2.获取触发源的变化,更新别的表。new,old代表变更前后的表。
create trigger trigger_name after update on table_namefor each row
update other_table_name set col_name = col_name + old.col - new.col;
*before/after insert 只能使用new,没有old
*before/after delete只能使用old,没有new
3.创建多行语句操作的触发器
delimiter $$ /* 由于既有的delimiter被多行语句占用,不能在作为结束符用,将语句分割符号设置为 $$ */create trigger trigger_name after update on table_name
for each row
begin
update other_table_name set col_name = 1;
update other_table_name2 set col_name2 = 1;
end
$$
delimiter ; /* 修改完后将语句分隔符还原 */
4.删除trigger
drop if exists trigger trigger_name;*注意事项
1.mysql只支持一个事件一个触发器。即after update绑定了一个触发器后,不可再绑定另一个。
如果想执行多个功能,则使用语句块(begin,end)来实现。
2.触发器执行的代码不能和绑定的表为同一个表,必须是监控A表,变化后操作B表。
<完>