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

Jam*_*ond 1 mysql

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

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

我的表看起来类似于下面(我删除了与问题无关的字段)

页数:id,标题,内容

视频:pid(网页ID),youtube_url

任何帮助将非常感激.

Hai*_*vgi 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;
Run Code Online (Sandbox Code Playgroud)

更多信息: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

你可以找到一个小例子:

删除MySql之前触发