构建架构时无法添加外键约束 SQL
Cannot add foreign key constraint SQL when building schema
我现在正在学习数据库 class。对于家庭作业,我得到了一段 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 执行此操作,两者都会产生相同的错误。我真的不知道给我的代码有什么问题,在网上查看后,似乎看不到任何明显的东西。
这可能是您练习的一部分。但是,假设不是,这里有重要的观察结果:
- 外键引用应该是主键,table都没有主键。
- 被引用的table必须在被引用前定义。
您可以着手解决这些问题。 Here 是具有正确定义的 SQL Fiddle。
第一个 table (emp) 的定义引用了尚未创建的 table (dept)。您必须先创建 'dept' 才能创建它的一个外键变成另一个 table。
按以下顺序执行查询:
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");
try :CONSTRAINT dno_fk FOREIGN KEY (dno) REFERENCES dept(dno)
删除级联
我现在正在学习数据库 class。对于家庭作业,我得到了一段 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 执行此操作,两者都会产生相同的错误。我真的不知道给我的代码有什么问题,在网上查看后,似乎看不到任何明显的东西。
这可能是您练习的一部分。但是,假设不是,这里有重要的观察结果:
- 外键引用应该是主键,table都没有主键。
- 被引用的table必须在被引用前定义。
您可以着手解决这些问题。 Here 是具有正确定义的 SQL Fiddle。
第一个 table (emp) 的定义引用了尚未创建的 table (dept)。您必须先创建 'dept' 才能创建它的一个外键变成另一个 table。
按以下顺序执行查询:
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");
try :CONSTRAINT dno_fk FOREIGN KEY (dno) REFERENCES dept(dno) 删除级联