如果从主表中删除行,则从其他表中删除行

时间:2010-08-29 15:22:20

标签: mysql

我有一个名为'pages'的表。每个页面都有文本,视频或图像的内容类型。根据内容类型的不同,记录也会插入到文本,视频或图像表中。

当我从'pages'中删除一行时,如何确保删除另一个表中的行?我对CASCADE了解一点,但我没有使用外键。至少没有明确说明。

我的表格与下面的内容类似(我删除了与问题无关的字段)

页数:ID,标题,内容

视频:pid(网页ID),youtube_url

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:7)

如果您的表格是 innodb 引擎,您可以在删除级联上声明外键 +

示例:

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                      ON DELETE CASCADE
) ENGINE=INNODB;

更多信息: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

另一种方法是在删除之前声明触发器 -

手册:

http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

你可以找到一个小例子:

Trigger before delete MySql