我想在同一张表上创建更多触发器

Posted

技术标签:

【中文标题】我想在同一张表上创建更多触发器【英文标题】:I want to create more triggers on the same table 【发布时间】:2011-03-07 17:02:40 【问题描述】:

我有 2 个表要在插入、更新或删除时同步 我可以在同一张表上创建多个触发器吗?

我已经写了这样的代码..但是它不起作用..但是当我只创建一个触发器时它可以正常工作。

代码是这样的:

在插入照片之前创建触发照片插入 每一行开始 插入到 old_photo 集 PhotoID = NEW.photo_id, photo_original = NEW.file_name ; 结束;

分隔符 |

在更新照片之前创建触发照片更新 每一行开始 更新 old_photo SET photo_original = NEW.file_name 在哪里 PhotoID = NEW.photo_id ; 结束;

分隔符 |

在删除照片之前创建触发照片删除 每一行开始 从 old_photo 中删除 PhotoID = OLD.photo_id ; 结束;


请问有解决办法吗?

【问题讨论】:

【参考方案1】:

将所有代码放入单个触发器中。 您可以在 BEGIN 和 END 之间使用多个语句

【讨论】:

感谢 Nakti,我尝试这样做,但失败了。但我找到了解决方案..我所做的只是删除分隔符和 BEGIN ,结束代码将是这样的:在插入照片之前创建触发器照片插入每行插入 old_photo SET PhotoID = NEW.photo_id, photo_original = NEW.file_name ;在每行更新照片之前创建触发照片更新 old_photo SET photo_original = NEW.file_name WHERE PhotoID = NEW.photo_id ; CREATE TRIGGER photosdelete BEFORE DELETE ON 照片 FOR EACH DELETE FROM old_photo WHERE PhotoID = OLD.photo_id ;

以上是关于我想在同一张表上创建更多触发器的主要内容,如果未能解决你的问题,请参考以下文章

如果更新,则在同一张表上执行触发器

MariaDB 触发器在同一张表上执行 UPDATE 和 INSERT

Oracle更新触发器在同一个表上

在过程中动态添加的表上创建触发器

表上触发器导致慢查询

瞬间截断和插入同一张表