gpt4 book ai didi

sql - 从另一个表中删除行后从表中删除行

转载 作者:行者123 更新时间:2023-11-29 11:51:29 24 4
gpt4 key购买 nike

我有这个架构:

table schema

我想做的是,删除word/palabra中的一行后,article/articulo中的所有行 引用它的也将被删除。

请注意,这是一个n 到n 关系,因此表r1 包含所有外键。

最佳答案

编辑:原来的答案有错误的假设。这是新的答案:

要删除文章行,您可以使用触发器。由于“BEFORE DELETE”子条款,这将在您的外键约束级联删除之前运行。

CREATE TRIGGER before_delete_word_trigger
BEFORE DELETE ON word
FOR EACH ROW
BEGIN
DELETE FROM article
WHERE article.id_article IN
(SELECT DISTINCT id_article FROM R1 where R1.id_word = deleted.id_word)
END;

More on triggers


旧答案:

级联删除的其他信息:

您可以在外键约束中使用“ON DELETE”子句来触发关系表上的行为。

CREATE TABLE R1
(
id_r1 serial NOT NULL PRIMARY KEY,
id_article int NOT NULL,
id_word int NOT NULL,

CONSTRAINT fk_r1_word
FOREIGN KEY (id_word)
REFERENCES words (id_word)
ON DELETE CASCADE,

CONSTRAINT fk_r1_article
FOREIGN KEY (id_article)
REFERENCES articles (id_article)
ON DELETE CASCADE
);

“ON DELETE CASCADE”允许您的关系表在它指向的内容被删除时自行清理。这样,当删除词源时,您的文章总是会删除它们的词,并且如果删除文章,则删除与文章关联的所有词关系数据,假设这是需要的。如果删除关系,单词或文章表中的任何行都不会受到影响。

当外部行被更改/删除时,还有其他选项可用于设置自动行为。这是 some info关于这个主题的 MySQL。

关于sql - 从另一个表中删除行后从表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com