[英]delete rows from table after delete row from another table
编辑:原始答案有错误的假设。 这是新的答案:
要删除文章行,可以使用触发器。 由于“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;
老答案:
级联删除的其他信息:
您可以使用外键约束中的“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”允许您的关系表在其指向的内容被删除后自行清理。 这样,当删除单词的来源时,您的文章总是删除其单词,并且如果文章被删除,则删除与该文章相关联的所有单词关系数据,假设需要。 如果删除关系,则word或article表中的所有行都不会受到影响。
当更改/删除外部行时,还有其他选项可用于设置自动行为。 以下是关于MySQL的这个主题的一些信息 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.