Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 внешний ключ на неуникальное поле  [new]
Тэй
Member

Откуда:
Сообщений: 79
можно ли создать внешний ключ?
В таблице Country есть столбцы Id - идентификатор, первичный ключ и Parent - ссылка на Id. Используется для хранения разных вариантов написания стран. парент одинаковый у вариантов написания одной страны.

Есть таблица, ссылающаяся на Country. Можно ли сделать внешний ключ на поле Parent?
при попытке
ALTER TABLE [dbo].[GTD]
WITH CHECK
ADD CONSTRAINT [FK_GTD_Country] 
FOREIGN KEY  (CountryId)
REFERENCES [dbo].[Country] ([Parent])

ошибка
Сообщение 1776, уровень 16, состояние 0, строка 3
В таблице "dbo.Country", на которую имеются ссылки, отсутствуют первичные или потенциальные ключи, соответствующие списку ссылающихся столбцов во внешнем ключе "FK_GTD_Country".

сделала
CREATE NONCLUSTERED INDEX [I_Parent] ON [dbo].[Country] 
(
	[Parent] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

ошибка все та же....
10 янв 13, 10:34    [13745378]     Ответить | Цитировать Сообщить модератору
 Re: внешний ключ на неуникальное поле  [new]
Glory
Member

Откуда:
Сообщений: 104760
Тэй
ошибка все та же....

Вы думаете, что CREATE NONCLUSTERED INDEX создает "первичный или потенциальный ключ" ?
10 янв 13, 10:37    [13745398]     Ответить | Цитировать Сообщить модератору
 Re: внешний ключ на неуникальное поле  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Тэй
Можно ли сделать внешний ключ на поле Parent?

Непонятна сама идея создания такого ключа. Наверное, Вы хотите, чтобы в какой-то таблице присутствовали только те значения, которые есть в поле Parent?
10 янв 13, 10:40    [13745422]     Ответить | Цитировать Сообщить модератору
 Re: внешний ключ на неуникальное поле  [new]
Тэй
Member

Откуда:
Сообщений: 79
Glory,

честно, пока понимания индексов полного нет, так, что-то очень общее... я так понимаю, на мой вопрос ответ "нет". тк потенциальный ключ не может быть неуникальным?

уже сделала по-другому... просто интересно было узнать....
10 янв 13, 10:45    [13745444]     Ответить | Цитировать Сообщить модератору
 Re: внешний ключ на неуникальное поле  [new]
Тэй
Member

Откуда:
Сообщений: 79
Jovanny,

да, решила сделать внешний ключ на поле айди, а в процессе вставки находить айди парента.
10 янв 13, 10:47    [13745449]     Ответить | Цитировать Сообщить модератору
 Re: внешний ключ на неуникальное поле  [new]
Glory
Member

Откуда:
Сообщений: 104760
Надо правильно констрейнт "строить"
ALTER TABLE [dbo].[GTD]
WITH CHECK
ADD CONSTRAINT [FK_GTD_Country]
FOREIGN KEY (Parent)
REFERENCES [dbo].[Country].CountryId
10 янв 13, 10:49    [13745457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить