Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Внешний ключ как ограничение таблицы

Синтаксис ограничения таблицы FOREIGN KEY:

FOREIGN KEY <COLUMN list> REFERENCES <PKTABLE> [ <COLUMN list> ]

Первый список столбцов - это список из одного или более столбцов таблицы, которые отделены запятыми и будут созданы или изменены этой командой. Pktable - это таблица, содержащая родительский ключ. Она может быть таблицей, которая создается или изменяется текущей командой. Второй список столбцов - это список столбцов, которые будут составлять родительский ключ. Списки двух столбцов должны быть совместимы, т.е.:

  • Они должны иметь одинаковое число столбцов.
  • В данной последовательности, первый, второй, третий, и т.д., столбцы списка столбцов внешнего ключа, должны иметь одинаковые типы данных и размеры, что и первый, второй, третий, и т.д., столбцы списка столбцов родительского ключа. Столбцы в списках обоих столбцов не должны иметь одинаковых имен, хотя мы и использовали такой способ в наших примерах чтобы делать связь более понятной.

Создадим таблицу Заказчиков с полем snum, определенным в качестве внешнего ключа, ссылающегося на таблицу Продавцов:

CREATE TABLE Customers ( cnum integer NOT NULL PRIMARY KEY cname char(10), city char(10), snum integer, FOREIGN KEY (snum) REFERENCES Salespeople ( snum );

Имейте в виду, что при ИСПОЛЬЗОВАНИИ ALTER TABLE вместо CREATE TABLE, для применения ограничения FOREIGN KEY, значения, которые Вы указываете во внешнем ключе и родительском ключе, должны быть в состоянии справочной целостности. Иначе команда будет отклонена. Хотя ALTER TABLE очень полезна из-за ее удобства, вы должны будете в вашей системе, по возможности каждый раз, сначала формировать структурные принципы, типа справочной целостности.