2010-10-08 2 views
2

я пытаюсь добавить ограничение на тип данных char(1)SQL Server 2008 - добавление ограничения

я хотел бы пользователю только быть в состоянии ввести Y или N или n или Y

я щелкнул на контрольном ограничении в окне CHECK CONSTRAINT EXPRESSION, что я должен ввести?

ответ

2

Всегда лучше делать такие изменения вручную, а не через графический интерфейс.

ALTER TABLE YourTable 
ADD CONSTRAINT CHK_YourTable_YourColumn_YesOrNo CHECK(YourCOlumn IN ('Y', 'N')) 

Edit: GUI может выдавать неоптимальный DDL, и с небольшой практикой вы можете быть столь же эффективным с ручными сценариями, как с графическим интерфейсом, и вы точно знаете, что происходит. Также вы действительно хотите сохранить все свои DDL в контроле версий, включая скрипт для изменений.

+0

Сашка, почему-? почему вручную лучше? –

+0

@jenny: Поскольку вы не можете гарантировать, что у вас будет доступ к GUI, и операции, как правило, относятся к инструменту (IE: не может использовать тот же процесс в TOAD для SQL Server и т. Д.) –

+0

+1, 'почему вручную лучше? ', SSMS довольно часто пишет массивный скрипт, который генерирует полную повторяющуюся новую таблицу (с новым изменением), копирует все данные в нее, затем отбрасывает исходную таблицу и переименовывает новую таблицу в исходное имя таблицы, также он упадет и добавит все ограничения и индексы и т. д. Это намного проще, быстрее, снижает нагрузку на базу данных и более надежно изучает и использует гораздо более простую команду ALTER TABLE. –

1

Использование ТАВОГО ALTER:

ALTER TABLE dbo.YOUR_TABLE 
    ADD CONSTRAINT bool_check CHECK (LOWER(your_column) IN ('n', 'y')) ; 
0
alter table TableName 
    add constraint CHK_TableName_ColumnName check (ColumnName in ('Y','N','y','n')) 
Смежные вопросы