Разница в именовании SQL FOREIGN KEY CONSTRAINT - PullRequest
1 голос
/ 06 июля 2019

В чем разница между следующими кодами?

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 ]

1 голос
/ 06 июля 2019

ADD CONSTRAINT FK_PersonOrder задает произвольное имя для внешнего ключа, иначе он будет автоматически генерироваться динамически.

0 голосов
/ 06 июля 2019

По той же причине мы называем что-нибудь;чтобы описать его достаточно, чтобы мы понимали, что это такое, или что оно делает

Иногда движки баз данных не указывают явно какие-либо подробности о другом конце отношений, и в этих случаях гораздо приятнее вставлять в ваш адреси посмотрите «ограничение» fk_person-addressid_address-id «нарушен», чем «ограничение» fk_12ef3a2dc «нарушено» и оставьте думать: «хммм, 12ef3a2dc / это таблица адресов одна? Или рабочая роль одна? Или компания одна ..Я просто пойду и посмотрю в дБ, чтобы узнать .. "

0 голосов
/ 06 июля 2019

Оба эти утверждения функционально одинаковы.Присвоение имени внешнему ключу (или любому другому ограничению в этом отношении) облегчает работу с ним - когда оператор DML терпит неудачу из-за его нарушения, его легче понять, его легче отбросить, если вы решите это сделатьи т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...