[英]Cannot add foreign key constraint SQL when building schema
我现在正在介绍数据库类。 对于一项家庭作业,我得到了一段SQL代码,并被告知仅运行一些查询并将结果返回。 问题是我什至无法构建老师给我的代码给定的架构。 这是这段代码:
CREATE TABLE emp (
name char(15),
dno int,
FOREIGN KEY (dno) REFERENCES dept(dno)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE dept (
dno int,
location char(30)
);
INSERT INTO emp(name,dno) VALUES
("Tom",111),
("Mary",111),
("Jack",222),
("Henry",222);
INSERT INTO dept(dno, location) VALUES
(111,"Irvine"),
(222,"LA"),
(333,"SF");
运行此命令时,我收到一条错误消息,提示Cannot add foreign key constraint
。 我尝试通过MySQL工作台和SQL Fiddle来执行此操作,这两者都会产生相同的错误。 我真的不知道给我的代码有什么问题,而且在网上查看后,似乎看不到明显的东西。
您可能需要做的一部分练习。 但是,假设并非如此,以下是重要的观察结果:
您可以解决这些问题。 这是带有正确定义的SQL Fiddle。
第一个表(emp)的定义引用了尚未创建的表(dept)。您必须创建第一个'dept'才能将其外键创建到另一个表中。
按以下顺序执行查询:
CREATE TABLE dept (
dno int,
location char(30)
);
CREATE TABLE emp (
name char(15),
dno int,
FOREIGN KEY (dno) REFERENCES dept(dno)
ON DELETE SET NULL
ON UPDATE CASCADE
);
INSERT INTO emp(name,dno) VALUES
("Tom",111),
("Mary",111),
("Jack",222),
("Henry",222);
INSERT INTO dept(dno, location) VALUES
(111,"Irvine"),
(222,"LA"),
(333,"SF");
尝试:CONSTRAINT dno_fk外键(dno)参考DEPT(dno)删除级联
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.