ограничения иностранного ключа плюсы - PullRequest
0 голосов
/ 07 ноября 2019

Итак, кроме простого присвоения внешнего ключа имени, есть ли реальное преимущество в создании внешнего ключа ограничения вместо обычного внешнего ключа?

1 Ответ

1 голос
/ 08 ноября 2019

Синтаксис для добавления внешнего ключа с использованием references внутри оператора create table: :

[ CONSTRAINT constraint_name ]
REFERENCES reftable [ ( refcolumn ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ]

и использование alter table ... add constraint:

[ CONSTRAINT constraint_name ]
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ]

Единственное функциональное отличие состоит в том, что форма alter table позволяет создавать внешние ключи, использующие более одного столбца.

Конечно, вы можете использовать форму alter table внутри create table как ограничение таблицы, а не ограничение столбца:

create table T (
    ...
    foreign key (c1, c2) references T2(c1, c2)
)

Во всех случаях внешние внешние ключи одинаковы, единственная разница в том, где вы их определяете.

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