mysql触发器联机删除_mysql触发器删除实例1
mysql>create table t1 (a1 int);mysql>create table t2 (a2 int , b2 char(5));其中t2.a2和t1.a1是對應的,a2是全集 a1是子集,我想在刪除t2里a2時,相應地刪除t1里a1的值mysql>delimiter |>create trigger tt2_ad after delete on t2>for each row begin>delete from t1 where a1 not in(select a2 from t2);>end;>|查看觸發器是否創建成功?mysql>show triggers;----+| Trigger | Event? | Table | Statement???????????????????????????????? | Timing | Created | sql_mode | Definer???? |+---------+--------+-------+-------------------------------------------+--------+---------+----------+----------------+| tt2_ad? | DELETE | t2??? | begin delete from t1 where a1=old.a2; end | AFTER? | NULL??? |????????? | root@localhost |+---------+--------+-------+-------------------------------------------+--------+---------+----------+----------------+觸發器的命名規則:ttable_(a|f)(d|i|u) t-觸發器 table-表名 a|b-觸發時間before | after d|i|u-觸發動作 delete | insert | update如果觸發器編寫錯誤就有可能引起:ERROR 1442 (HY000): Can't update table 't2' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.首先檢查觸發器語法是否錯誤,我遇到的問題就是這樣解決的。
delimiter |
create trigger tff_ad after delete on ff for each row
begin
if 2 = old.type then
update zz set a=0 where a=old.zid;
delete from mm where b=old.zid;
elseif 1 = old.type then
update yy set c=0 where c=old.yid;
delete from mm where dd=old.yid;
end if;
end;|
總結
以上是生活随笔為你收集整理的mysql触发器联机删除_mysql触发器删除实例1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx反向代理配置配置实例
- 下一篇: Tracing mysqld Using