为什么ON CASCADE DELETE不起作用?

BPS*_*BPS 0 mysql sql

我想在一个查询中删除2个表中的行,所以我这样做:

DELETE FROM form_questionnaire;
Run Code Online (Sandbox Code Playgroud)

这是从中删除所有行form_questionnaire但在其中留下行questionnaire.为什么行questionnaire,如果有不被删除ON DELETE CASCADEform_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

Dam*_*ver 5

你正在考虑以错误的方式进行级联.您当前的外键约束所说的是"当您删除任何行时questionnaire,还删除表(form_questionnaire)中引用这些行的任何行".这就是级联.