对于我的生命,我找不到为什么MySQL不喜欢这个说法:MySQL的语法错误#1064 ON DELETE CASCADE
CREATE TABLE IF NOT EXISTS personnel
(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
role VARCHAR(50) NOT NULL,
line_manager INTEGER NULL,
FOREIGN KEY (role) REFERENCES roles(name)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (line_manager) REFERENCES personnel(id)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB;
从MySQL将在此之后,输出产生的是ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE CASCADE UPDATE CASCADE, FOREIGN KEY (line_manager) REFERENCES personnel(id) ' at line 10
。
任何人都可以建议我做错了什么?
您粘贴错误是无关的DDL;在约束定义中的UPDATE CASCADE之前,在另一个引用“staff”表之前有一个缺少的'ON'关键字 –
啊,对不起,我部分撒了谎。我将DDL从“员工”改为“人员”,以避免进一步混淆。错误已更新。 – CJxD
够公平的;仍然,你得到的错误指向的事实是,MySQL期待'ON'关键字,但没有找到它 –