SQL FOREIGN KEY CONSTRAINT命名差异

时间:2019-07-06 07:57:17

标签: mysql sql

以下代码之间有什么区别?

1。

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

2。

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

在第二个代码中将名称添加到外键constraint(FK_PersonOrder)中有什么用?

3 个答案:

答案 0 :(得分:1)

ADD CONSTRAINT FK_PersonOrder为前键提供了自定义名称,否则它将自动动态生成。

答案 1 :(得分:0)

这两个语句在功能上是相同的。给外键起一个名字(或对此问题的任何其他约束),使操作起来有点容易-当DML语句因为违反而失败时,它更容易理解,如果您选择这样做,也更容易删除它等

答案 2 :(得分:0)

出于同样的原因,我们命名任何东西;对其进行充分描述,以便我们了解其含义或作用

有时候,数据库引擎未明确说明有关关系另一端的任何详细信息,在这种情况下,插入地址表中要好得多,并且看到“约束'fk_person-addressid_address-id'违反”比“约束'fk_12ef3a2dc'被违反”,然后想到“ hmmm,12ef3a2dc /是地址表一个?还是工作角色一个?还是公司一个?。我只是去看看dB来找出。”