构建架构时无法添加外键约束SQL

Ale*_*lex 0 mysql sql foreign-keys

我现在正在介绍数据库类。对于一项家庭作业,我得到了一段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");
Run Code Online (Sandbox Code Playgroud)

当这运行时,我得到一个错误的说法Cannot add foreign key constraint。我尝试通过MySQL工作台和SQL Fiddle来执行此操作,这两者都会产生相同的错误。我真的不知道给我的代码有什么问题,而且在网上查看后,似乎看不到任何明显的东西。

Gor*_*off 5

您可能需要做的一部分练习。但是,假设并非如此,以下是重要的观察结果:

  • 外键引用应该是主键,并且两个表都没有主键。
  • 被引用的表必须先定义才能被引用。

您可以解决这些问题。 是带有正确定义的SQL Fiddle。