@beduin01

Чем отличается constraint от foreign key?

Ограничение целостности я могу задать как через constraint так и через foreign key. Чем одно лучше другого?
  • Вопрос задан
  • 3574 просмотра
Решения вопроса 1
@cicatrix
было бы большой ошибкой думать
Вы путаете сладкое с мягким.
Constraint ограничение - когда вы задаёте параметры таблицы при помощи create/alter table
вы говорите, что для такого-то поля задаётся constraint (ограничение).
Ограничениями может быть primary key, foreign key, unique, default, check и т. д. - это всё ограничения.
Вот таблица:
CREATE TABLE MYTABLE  (
   ID BIGINT NOT NULL CONSTRAINT PK_MYTABLE PRIMARY KEY,
   CLIENT BIGINT NOT NULL CONSTRAINT FK_MYTABLE_CLIENT FOREIGN KEY REFERENCES CLIENTS(ID),
   EMAIL NVARCHAR(100) NOT NULL CONSTRAINT UQ_MYTABLE_EMAIL UNIQUE,
   ACTIVE BIT NOT NULL CONSTRAINT DF_MYTABLE_ACTIVE DEFAULT (1)
)

Что переводится как:
Создать таблицу MYTABLE (с полями):
ID целое 64 бит, не допускать пустых, ограничение с названием PK_MYTABLE вида "Первичный ключ",
CLIENT целое 64 бит, не допускать пустых, ограничение с названием FK_MYTABLE_CLIENT вида "Внешний ключ", который ссылается на таблицу CLIENTS, поле ID,
EMAIL строковое длиной 100, не допускать пустых, ограничение с названием UQ_MYTABLE_EMAIL вида "Должно быть уникальным",
ACTIVE бит, не допускать пустых, органичение с названием DF_MYTABLE_ACTIVE вида "Значение по умолчанию" равное 1

Есть и альтернативный синтаксис, где ключевое слово constraint не используется.
В основном его применяют, когда надо явно задать имя на ограничение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
foreign key
Связь с другой таблицей.

constraint
Ограничение. Может быть не связано с другой таблицей. Например, дата ограничена определённым периодом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы