我现在正在介绍数据库类。对于家庭作业,我获得了一段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 workbench和SQL Fiddle来做这件事,两者都会产生同样的错误。我不知道给我的代码有什么不对,但在网上看之后,似乎看不到任何明显的东西。
答案 0 :(得分:5)
这可能是练习的一部分,你可以弄明白这一点。但是,假设不是,这里有重要的观察结果:
您可以解决这些问题。 Here是一个具有正确定义的SQL小提琴。
答案 1 :(得分:1)
第一个表(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");
答案 2 :(得分:0)
尝试:CONSTRAINT dno_fk FOREIGN KEY(dno)REFERENCES dept(dno) ON DELETE CASCADE