如何在MySQL中的同一个表的列中添加引用完整性?
我有一个具有以下结构的表:
Employee
-----------------------------
----[Other Columns Snipped]----
super_serv_no
serv_no (FK for super_serv_no)
如何使serv_no
成为super_serv_no
的外键,并强制引用完整性?
答案 0 :(得分:0)
这是一个语法示例,可以像您描述的那样创建外键约束(对于使用InnoDB引擎的表):
ALTER TABLE `employee` ADD CONSTRAINT
`FK_employee_head_serv_no`
FOREIGN KEY (`head_serv_no`) REFERENCES `employee` (`serv_no`)
ON DELETE RESTRICT ON UPDATE CASCADE
规范模式是外键引用表的PRIMARY KEY。 (我认为MySQL更加宽松,外键可以引用任何索引的列集,因此至少需要一个前导列为serv_no
的索引。)我们& #39; d通常只在serv_no
列上有唯一索引。)
答案 1 :(得分:0)
您可以定义FK,就像为不同的表定义FK一样:
ALTER TABLE Employee
ADD CONSTRAINT FOREIGN KEY (super_serv_no)
REFERENCES (serv_no);
注意强>:
确保super_serv_no未定义为NOT NULL
。这是因为最顶层的serv_no不会有super_serv_no。
参考文献: Using FOREIGN KEY Constraints at MySQL 5.0 Reference Manual