我有一个名为'pages'的表。每个页面都有文本,视频或图像的内容类型。根据内容类型的不同,记录也会插入到文本,视频或图像表中。
当我从'pages'中删除一行时,如何确保删除另一个表中的行?我对CASCADE了解一点,但我没有使用外键。至少没有明确说明。
我的表格与下面的内容类似(我删除了与问题无关的字段)
页数:ID,标题,内容
视频:pid(网页ID),youtube_url
非常感谢任何帮助。
答案 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
你可以找到一个小例子: