【发布时间】:2019-12-11 14:09:51
【问题描述】:
基本上我只是不想让DELETE FROM X 删除所有行。
例如:
DELETE FROM X WHERE ID = 3 OR ID = 4; --> 允许,因为不要尝试删除所有表。
DELETE FROM X; --> 不允许,因为它会删除所有表。
如何使用触发器做到这一点?
【问题讨论】:
-
如果只有两行:3 和 4 怎么办?
-
那么不,至少需要 1 行才能工作,但我认为如果控制它的 DELETE FROM X 是否足够
-
您不能使用触发器执行此操作,因为触发器在一个事务中执行。您看不到是否有可能由另一个客户端同时运行的另一个事务正在删除最后一行。也就是说,您的事务或其他事务都不会删除 所有 行,但是一旦你们俩都提交了,就不会剩下任何行了。
-
我可以尝试在触发器中执行查询吗?
-
上述 cmets 中描述的 Aß 很难避免这种情况。更改列上所需的条件可能更容易。为什么这是必要的?
标签: mysql sql database triggers