добавление ограничения к столбцу, указанному в столбце другой таблицы - PullRequest
1 голос
/ 11 июня 2011

У меня есть таблица1 с идентификатором имени столбца, и у меня есть таблица2 с идентификатором имени столбца. Столбец Id в таблице один является первичным ключом, но во второй таблице это не так, однако я хочу добавить в столбец table1.ID противопоказание, чтобы не принимать значения, отличные от table2.ID. Это возможно или нет? Если так, как это можно сделать в SQL Server?

Ответы [ 4 ]

0 голосов
/ 16 июня 2011

Вы ссылаетесь на столбец первой таблицы "ID" как внешний ключ ко второй таблице.

0 голосов
/ 11 июня 2011

Вот пример создания отношения внешнего ключа:

create table Table1 (id int primary key)
create table Table2 (id int foreign key references Table1(id))

При проектировании базы данных она называется отношением «один ко многим» между таблицами 2 и 1. Одна строка в Таблице 1 может относиться ко многим строкам в Таблице 2. Строка в Таблице 1 может относиться только к одной строке в Таблице 2.

0 голосов
/ 11 июня 2011

Я хочу добавить ограничение в table1.ID столбец не принимать значения других thatn table2.ID

Идентификатор столбца в таблице один является основным ключ

Это возможно сделать только с ограничением внешнего ключа, если столбец идентификатора в таблице 2 определен как уникальный или является первичным ключом.

Это будет работать:

create table Table2 (id int unique)
create table Table1 (id int primary key foreign key references Table2(id))

Это также будет работать:

create table Table2 (id int primary key)
create table Table1 (id int primary key foreign key references Table2(id))

Это не работает:

create table Table2 (id int)
create table Table1 (id int primary key foreign key references Table2(id))
0 голосов
/ 11 июня 2011

Да, это ... Вы должны заключить соглашение один ко многим - ограничение FOREIGN KEY.

Вы делаете это, делая заявление ALTER. Это можно сделать, если не нарушены никакие ограничения

...