如何检查是否存在NOT NULL约束

时间:2008-12-09 15:31:17

标签: c# sql-server

我正在通过C#代码修改SQL表,如果存在,我需要删除NOT NULL约束。如何检查它是否存在?

5 个答案:

答案 0 :(得分:14)

select is_nullable 
from   sys.columns
where  object_id = OBJECT_ID('tablename')  
and    name = 'columnname';

答案 1 :(得分:1)

那么,你可以查看syscolumns.isnullable标志吗?或者最近:

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

其中@tableId是OBJECT_ID('TableName')

答案 2 :(得分: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'

然后执行删除“not null”约束的ALTER语句

答案 3 :(得分:0)

我不确定你的商业规则,所以我可能错了,但你提出的建议听起来不错。

如果NOT NULL约束不存在,则将其从DB中删除。如果它存在,请围绕它进行编程。

如果您确实需要实现DDL来更改表,我会编写一个存储过程来执行并从C#调用存储过程。

答案 4 :(得分:0)

您可以使用COLUMNPROPERTY

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