Как проверить, если NOT NULL ограничение существует

голоса
2

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

Задан 09/12/2008 в 16:31
источник пользователем
На других языках...                            


5 ответов

голоса
14

select is_nullable 
from   sys.columns
where  object_id = OBJECT_ID('tablename')  
and    name = 'columnname';
Ответил 09/12/2008 в 16:37
источник пользователем

голоса
1

выполнить эту инструкцию 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, которая удаляет «не нуль» ограничение

Ответил 09/12/2008 в 16:40
источник пользователем

голоса
1

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

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

Где @tableId является OBJECT_ID ( 'TableName')

Ответил 09/12/2008 в 16:37
источник пользователем

голоса
0

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

ВЫБОР COLUMNPROPERTY (OBJECT_ID ( 'schemaName.TableName'), 'ColumnName', 'AllowsNull')

Ответил 09/12/2008 в 16:40
источник пользователем

голоса
0

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

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

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

Ответил 09/12/2008 в 16:35
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more