2011-08-08 58 views
8

创建外键时此语法是否正确?创建外键的MySQL语法

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; 
+0

你为什么不试试? mysql在检查语法方面比任何人都更好 – zerkms

+3

@zerkms我问这个是因为我有一个电子书,显示这是创建外键的正确方式 - 与Doug Doug说的相反 - 它看起来像MySQL接受它(不抱怨语法),但实际上并没有创建外键。 这不是我的老师教我的方式。这就是为什么我试图验证这种方式是否可以接受的原因。 – aer

回答

15

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

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

ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) REFERENCES department (departmentID); 
+0

我的电子书关于创建外键的解释如何? _“这条语句中只有一条新语法,employee表中的最后一列是员工工作的部门的id,这是一个外键,我们在表定义中声明了这一点,方法是添加引用条款如下: DepartmentID的诠释不是空引用部门(DepartmentID的) 这就告诉我们,在雇员表中的DepartmentID应参考回到department表中DepartmentID列“_ 你能说。它? – aer

+0

这就是我提供的代码的解释。 – aer

+2

我自己尝试了代码,并且使用您的代码创建了表,但直到我单独创建了外键,并且在答案中提供了代码之后,才引用参考完整性。 – Doug

2
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) 
) 
+4

欢迎!为什么这个答案比2年后接受的答案好? –

1
FOREIGN KEY (departmentID) REFERENCES department(departmentID) 

谢谢!