触发器三合一,把 update,insert,delete合成一个来做

时间:2023-02-14 05:03:10
create trigger case_head
before update on case_head
for each row
begin

INSERT INTO log_case_head(id,number) values (old.id,old.number);

end//


以上代码是一个成功的trigger,其功能是当表case_head在更新前,先备份到另一个表中,但要只有update才能备份。
我想当,delete,insrt时,都要做备份。
我不想写三次trigger
你有好的法子吗?
谢谢。我们老师说,mysql,只能update与delete合并,Insert要单独写。

6 个解决方案

#1


没有办法,在MYSQL分3次

#2


引用 1 楼 wwwwb 的回复:
没有办法,在MYSQL分3次


但是我不想写三次,我觉得太2

#3


呵呵,那就更换数据库吧

#4


MYSQL只能分开写,不支持合并。 MYSQL中连update 与 delete 都不能合并。

#5


没必要较真非要写一个

#6


mysql> CREATE TRIGGER DML_LOG
    -> BEFORE
    -> DELETE OR INSERT OR UPDATE
    -> on t7
    -> for each row 
    -> begin
    -> insert into t8
    -> valuees(old.catid,old.arrchildid,old.catname);
    -> end;
无论是 or 还是 ,都是报语法错误。
用Navicat for Mysql 复选框也是只能选一个。

#1


没有办法,在MYSQL分3次

#2


引用 1 楼 wwwwb 的回复:
没有办法,在MYSQL分3次


但是我不想写三次,我觉得太2

#3


呵呵,那就更换数据库吧

#4


MYSQL只能分开写,不支持合并。 MYSQL中连update 与 delete 都不能合并。

#5


没必要较真非要写一个

#6


mysql> CREATE TRIGGER DML_LOG
    -> BEFORE
    -> DELETE OR INSERT OR UPDATE
    -> on t7
    -> for each row 
    -> begin
    -> insert into t8
    -> valuees(old.catid,old.arrchildid,old.catname);
    -> end;
无论是 or 还是 ,都是报语法错误。
用Navicat for Mysql 复选框也是只能选一个。