如何在MySQL的同一个表中维护外键的参照完整性?

时间:2014-04-17 15:48:22

标签: mysql foreign-key-relationship

如何在MySQL中的同一个表的列中添加引用完整性?

我有一个具有以下结构的表:

Employee
-----------------------------
----[Other Columns Snipped]----
super_serv_no       
serv_no            (FK for super_serv_no)

如何使serv_no成为super_serv_no的外键,并强制引用完整性?

2 个答案:

答案 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