我想在一个查询中删除2个表中的行,所以我这样做:
DELETE FROM form_questionnaire;
Run Code Online (Sandbox Code Playgroud)
这是从中删除所有行form_questionnaire但在其中留下行questionnaire.为什么行questionnaire,如果有不被删除ON DELETE CASCADE的form_questionnaire.questionnaire_id?
我的桌子
CREATE TABLE questionnaire(
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
content JSON,
creator VARCHAR(50) NOT NULL,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE form_questionnaire(
form_id INTEGER,
questionnaire_id INTEGER,
FOREIGN KEY(form_id) REFERENCES form(id),
FOREIGN KEY(questionnaire_id) REFERENCES questionnaire(id) ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
数据库服务器
MySQL 5.7.21-20
你正在考虑以错误的方式进行级联.您当前的外键约束所说的是"当您删除任何行时questionnaire,还删除此表(form_questionnaire)中引用这些行的任何行".这就是级联.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |