我有一个关于ON DELETE CASCADE的问题,我已经把这个表作为一个例子。
-I
为了删除与主表关联的所有数据,我在添加表后使用此ALTER TABLE命令。
CREATE TABLE shop_articles(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
description TEXT
);
CREATE TABLE shop_articles_images(
id INT AUTO_INCREMENT PRIMARY KEY,
article_id INT,
description VARCHAR(255),
image VARCHAR(255),
FOREIGN KEY (article_id) REFERENCES shop_articles (id)
);
它接缝已经添加了我不能删除主表中的行,我不想手动删除其他附属表,但删除它从主表删除。
任何人都有这方面的经验,或者可以看到我在这里做错了什么?重启mysql服务器时,这是否可以重置?
答案 0 :(得分:2)
我认为你对ON DELETE CASCADE
如何运作有些困惑。如果您的引擎是MyISAM,它不强制执行外键,则不会发生级联删除。如果您的引擎是InnoDB,那么如果您从主表shop_articles
中删除记录,那么shop_articles_images
中通过密钥关系链接到主表的任何记录也将被删除。