1

Я хочу использовать проверочное ограничение для столбца любой таблицы в SQL Server 2008.Добавить проверочные ограничения в SQL Server: ADD CONSTRAINT против ADD ПРОВЕРКИ

Я хотел бы дать квалифицированное имя для проверки ограничений.

Я видел несколько версий синтаксиса о том, как создать его:

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CONSTRAINT [CK_UsuariosCRM_Estado] 
     CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

Что разница ADD CHECK и ADD CONSTRAINT для проверки ограничения?

+5

Второй синтаксис позволяет вам указать ваше ограничение. первый - нет. Хорошая практика - назвать ограничения. –

ответ

3

Это возможно, но очень плохая привычка добавить ограничения без имени:

CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test')) 

создаст CONSTRAINT со случайным именем. Лучше использовать это

CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test')) 

Это сделает то же самое, но назовет ограничение, как вы этого хотите.

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

Итак: Всегда указывайте свои ограничения!

Смежные вопросы