手动调用级联删除?

发布于 2024-12-08 11:31:11 字数 181 浏览 0 评论 0原文

假设我有 3 个表,“child1”、“child2”和“child3”,它们都有一个指向“parent”表的外键。 表“父”有一个字段“状态”,我希望如果某个元素的状态设置为“0”,则其所有子元素都将被删除。 (我使用触发器来检测状态变化)。 所以这就像调用“级联删除”,但不删除对象......

有没有一个好的方法来做到这一点?

Let's say I have 3 tables, "child1", "child2" and "child3", that all have a foreign key to the table "parent".
Table "parent" got a field "status", and I would that if status is set to "0" for an element, all its child are deleted. (I use trigger to detect status changes).
So it's like calling "cascade delete", but without deleting the object ...

Is there a good way to do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我三岁 2024-12-15 11:31:11

触发器检测到更改,您需要使用它来触发存储过程。这是一个很好的教程: http://markalexanderbain.suite101.com/mysql- storage-procedures-and-triggers-a71091

或者,如果您使用 php、coldfusion 或其他中间层,您可以将记录读入变量。请删除该行,然后重新插入记录。但是您最好使用存储过程来完成这项工作。

Trigger detects the change, you need to use it to fire a stored procedure. Here's a good tutorial: http://markalexanderbain.suite101.com/mysql-stored-procedures-and-triggers-a71091

Alternatively if you are using php, coldfusion or some other middle tier, you could read the record into a variable. Do delete the row, then re-insert the record. But you are better off with the stored procedure doing the work.

拒绝两难 2024-12-15 11:31:11

删除与父级关联的外键的所有子级..

authorname = Bill, authorid = 5

我们需要按帐单删除所有书籍

DELETE FROM books WHERE authorid=5

编辑:抱歉,重新阅读..您可以在状态的 UPDATE 上实现此逻辑

delete all children with associated foreign key to the parent..

authorname = Bill, authorid = 5

we need to delete all books by bill

DELETE FROM books WHERE authorid=5

EDIT: sorry, re-read.. you could implement this logic on UPDATE of the status

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文