Как проверить, существует ли ограничение NOT NULL - PullRequest
2 голосов
/ 09 декабря 2008

Я изменяю таблицу SQL с помощью кода C #, и мне нужно удалить ограничение NOT NULL, если оно существует. Как проверить, существует ли он первым?

Ответы [ 5 ]

14 голосов
/ 09 декабря 2008
select is_nullable 
from   sys.columns
where  object_id = OBJECT_ID('tablename')  
and    name = 'columnname';
1 голос
/ 09 декабря 2008

выполнить этот оператор SQL:

select * from information_schema.columns c
inner join information_schema.tables t on c.table_catalog = t.table_catalog and t.table_schema = c.table_schema and t.table_name = c.table_name
where c.table_name = 'Categories' and c.Is_nullable = 'NO'

и затем выполнить инструкцию ALTER, которая удаляет ограничение «не ноль»

1 голос
/ 09 декабря 2008

Ну, вы можете проверить syscolumns.isnullable флаг? Или совсем недавно:

COLUMNPROPERTY(@tableId, 'ColumnName', 'AllowsNull')

Где @tableId - OBJECT_ID ('TableName')

0 голосов
/ 09 декабря 2008

вы можете с использованием COLUMNPROPERTY :

SELECT COLUMNPROPERTY (OBJECT_ID ('schemaName.TableName'), 'ColumnName', 'AllowsNull')

0 голосов
/ 09 декабря 2008

Я не уверен в ваших бизнес-правилах, поэтому могу ошибаться, но то, что вы предлагаете, звучит как плохая идея.

Если ограничение NOT NULL не должно существовать, удалите его из БД. Если он должен существовать, программируйте вокруг него.

Если вам действительно нужно реализовать DDL для изменения таблиц, я бы написал хранимую процедуру и вызвал бы хранимую процедуру из C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...