【发布时间】:2019-07-17 06:49:45
【问题描述】:
有没有办法在 MariaDB/MySQL 中删除触发器内的一行(在触发触发器的表上)?
我知道在 postgres 中可以这样做。
这是我尝试过的 SQL。
TRIGGER trigger AFTER INSERT ON table FOR EACH ROW BEGIN
DELETE FROM table
WHERE expire_at <= CURRENT_TIMESTAMP;
END
我收到此错误消息:
代码:1442。无法更新存储中的表“cluster_events” 函数/触发器,因为它已被调用的语句使用 这个存储的函数/触发器。
有没有办法解决这个问题?
【问题讨论】:
-
'有什么方法可以在 MariaDB/MySQL 中删除触发器内的一行' - 如果它在触发触发器的表上删除。
-
你可以使用 sp from trigger 来做删除操作
-
好吧,我尝试创建一个对表执行删除操作并在触发器内部调用它的过程,但它给出了相同的结果。
-
@james 不,你不能,如果调用包含删除的函数,mysql 不会允许它也不会允许它。
-
'是否可以通过其他方式解决这个问题?' - 你真的想删除每一行吗?您可以考虑在事务中包含插入和删除。
标签: mysql sql database mariadb