创建外键时的MySQL语法

aer*_*aer 9 mysql foreign-keys

这种语法在创建外键时是否正确?

create table department
(
  departmentID int not null auto_increment primary key,
  name varchar(30)
) type=InnoDB;

create table employee
(
  employeeID int not null auto_increment primary key,
  name varchar(80),
  job varchar(30),
  departmentID int not null references department(departmentID)
) type=InnoDB;
Run Code Online (Sandbox Code Playgroud)

Dou*_*oug 17

看起来MySQL接受它(不抱怨语法)但实际上并没有创建外键.

要创建此外键,请运行以下命令:

ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) REFERENCES department (departmentID);
Run Code Online (Sandbox Code Playgroud)

  • 我自己尝试了代码,并且使用您的代码创建了表,但是直到我分别使用代码我在答案中提供的代码创建了外键时,才强制执行引用完整性. (2认同)

小智 5

create table employee
(
  employeeID int not null auto_increment primary key,
  name varchar(80),
  job varchar(30),
  departmentID int not null ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) references department(departmentID)
) 
Run Code Online (Sandbox Code Playgroud)

  • 欢迎!为什么此答案在2年后比公认的答案更好? (5认同)