项目上线前的测试,要频繁删除里面的一些数据 , 我就想写个触发器 , 删除一个 , 其他的也就跟着删除了 .......
不多说,上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