我正在通过C#代码修改SQL表,如果存在,我需要删除NOT NULL约束。如何检查它是否存在?
答案 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')