我正在使用wampserver,通过phpAdmin访问MySql。查询
alter table employee add constraint pqr
foreign key(Super_ssn) references employee(Ssn);
和
alter table employee add constraint pqrs
foreign key(Super_ssn) references employee(Ssn)
on update cascade;
两个都工作。但是
alter table employee add constraint pqrst
foreign key(Super_ssn) references employee(Ssn)
on delete set default on update cascade;
给出错误“#1005 - 无法创建表格”公司。#sql-11c4_18f'(错误号:150)“。
此外,删除不是作为关键字的语法颜色(它是黑色的,与其他'关键字'不同,如alter,on,cascade等)。
答案 0 :(得分:2)
您无法使用ON DELETE SET DEFAULT
或ON UPDATE SET DEFAULT
与InnoDB
<强> InnoDB and FOREIGN KEY Constraints 强>
虽然MySQL服务器允许SET DEFAULT,但会被拒绝 InnoDB无效。使用此CREATE TABLE和ALTER TABLE语句 InnoDB表不允许使用子句。
如果符合您的需要,您可以尝试ON DELETE SET NULL
如果ON UPDATE CASCADE或ON UPDATE SET NULL递归更新相同 在级联期间它先前更新过的表,它的作用就像 限制。这意味着您不能使用自引用ON UPDATE CASCADE或ON UPDATE SET NULL操作。这是为了防止无限 级联更新产生的循环。 自我引用ON DELETE 另一方面,SET NULL是可能的,因为是自参考ON 删除CASCADE。级联操作的嵌套操作可能不会超过15 深度水平