mysql触发器

项目上线前的测试,要频繁删除里面的一些数据 , 我就想写个触发器 , 删除一个 , 其他的也就跟着删除了 .......


不多说,上sql ......


delete from account_currency_log where message like '%1000001597%' ;  

第一行是我写的一个删除语句 , 我的目的是,跟这个编号1000001597有关的数据删除 , 其他两张表也删除 , 这个暂且可以理解为  "导火索" ;


下面是我写的一个触发器 , 也就是说 , 执行完上面的那个删除语句 下面这个 也生效了 ,为什么呢?? 
create trigger demo 
after 
delete on  account_currency_log 
for each row 
begin 
delete from transaction_manager where business_type = 20 ;
update user_task set is_finish = 1 where uid = '1000001597' and task_no in ('TASK06271724','TASK07061068') ;
end 


细细解读一下吧 :

触发器的语法如下 : 

create trigger trigger_name 

trigger_time 

trigger_event on table_name 

for each row

begin

you sql 

end 


结合着我写的触发器解释一下:

语法第一行 : 声明创建一个trigger 名曰 demo ;

语法第二行 : 上面我提了一个问题,为什么删除完 "导火索" ,触发器就执行了 ? trigger_time 就是触发器执行的时间 有 before 和after两个参数 , 我用的是after ,懂了吧 ...

语法第三行 : trigger_event 触发事件 , 这个可以是insert , delete , update 我的是delete , on 一定要加 , table_name 对应的是 "导火索" 那个语句里的表, 整个意思就是触发事件(insert,updat,delete) 建立在 哪个表上,  你可以理解为 : "导火索是什么";

语法第四行:固定写法 ;

语法第五行: begin 开始的关键字 

语法第六行 : 你写的sql , 也就是说 "导火索" 点着以后 , 你想让他产生什么影响 , 只可以是 update , insert , delete 

语法第七行 : end 结束的关键字 

注意:如果你的第六行只有一条语句 , 可以不用begin和end , 如果有多条 , 必须加begin和end ,一般情况 加上 规范嘛


我把我所有的触发器 语句都沾上 大家参考:


 delete from account_currency_log where message like '%1000001597%' ;  (触发器写好以后,只运行这个"导火索"就行!)


create TRIGGER  demo 
after 
delete on  account_currency_log 
for each row 
begin 
delete from transaction_manager where business_type = 20 ;
update user_task set is_finish = 1 where uid = '1000001597' and task_no in ('TASK06271724','TASK07061068') ;
end 


你可能感兴趣的:(总结)