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

Откуда:
Сообщений: 71
Хочу создать органичение уникальности на естественный первичный ключ (в таблице в кач-ве первичного ключа используется суррогатный). Данные в таблице уже есть и некоторые не отвечают создаваемому ограничению. Поэтому включаю опцию WITH NOCHECK:

ALTER TABLE dbo.IndexValues WITH NOCHECK 
ADD CONSTRAINT
	IX_IndexValues_unique UNIQUE NONCLUSTERED 
	(
	IndexDate,
	IndexID,
	Number,
	ProjectTypeID,
	ShiftID
	) ON [PRIMARY]

GO

Выдает следующее:

Msg 1505, Level 16, State 1, Line 1
CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 10. Most significant primary key is 'Nov 13 2009 12:00AM'.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
The statement has been terminated.

На таблице определено органичение PRIMARY KEY на суррогатный ключ (автоинкремент) и несколько некластерных индексов на столбцы IndexDate, IndexID, ShiftID.

Microsoft SQL Server  2000 - 8.00.2055 (Intel X86)   Dec 16 2008 19:46:53   Copyright (c) 1988-2003 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

Чего я не учел?
1 дек 11, 16:11    [11690618]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Чего я не учел?

When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated
against the constraint conditions. [b]DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.[b]

http://msdn.microsoft.com/en-us/library/ms190273.aspx

Posted via ActualForum NNTP Server 1.4

1 дек 11, 16:17    [11690674]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
DimmaN
Member

Откуда:
Сообщений: 71
daw
> Чего я не учел?

When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated
against the constraint conditions. [b]DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.[b]

http://msdn.microsoft.com/en-us/library/ms190273.aspx


Насколько я понимаю, это про отключение ограничения.
1 дек 11, 16:23    [11690736]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
Клон деды
Member

Откуда:
Сообщений: 6904
DimmaN
daw
> Чего я не учел?

пропущено...

http://msdn.microsoft.com/en-us/library/ms190273.aspx


Насколько я понимаю, это про отключение ограничения.


http://msdn.microsoft.com/ru-ru/library/ms190273.aspx

автор
WITH CHECK | WITH NOCHECK
Указывает, удовлетворяют ли данные в таблице недавно добавленному или повторно включенному ограничению FOREIGN KEY или CHECK.
1 дек 11, 16:30    [11690805]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
Glory
Member

Откуда:
Сообщений: 104751
WITH CHECK | WITH NOCHECK
Specifies whether the data in the table is or is not validated against a newly added or re-enabled FOREIGN KEY or CHECK constraint. If not specified, WITH CHECK is assumed for new constraints, and WITH NOCHECK is assumed for re-enabled constraints.
1 дек 11, 16:31    [11690815]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
DimmaN
Member

Откуда:
Сообщений: 71
Клон деды, спасибо. Как чувствовал, что где-то проглядел.
1 дек 11, 16:35    [11690840]     Ответить | Цитировать Сообщить модератору
 Re: Не создается UNIQUE CONSTRAINT с опцией WITH NOCHECK  [new]
DimmaN
Member

Откуда:
Сообщений: 71
Glory, спасибо.

Разобрался. Я тут еще параллельно прочитал про киэйт юник индекс и проникся. Придется все-таки чистить...
1 дек 11, 16:37    [11690868]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить