2012-06-20 45 views
3

任何人都可以请让我知道是否有方法编程确定Micorosft SQL Server数据库表字段是否具有NULL或NOT NULL约束?我需要这个,以便我可以部署一个可以重新运行的安全补丁。所以我是这样的(概念/伪代码)后我:SQL Server:如何检查字段是否存在“NULL”或“NOT NULL”约束?

IF (my_table COLUMN end_date HAS CONSTRAINT OF 'NOT NULL') ALTER TABLE my_table ALTER COLUMN end_date DATETIME NULL

所以我想从“NOT NULL”到“NULL”改变my_table.end_date如果它尚未改变。我只是不确定括号内的部分应该是什么。

我知道如何查询dbo.sysobjects的东西,如现有的字段,现有的外键约束等(有几个线程已经在那),但我不知道如何专门检查NULL/NOT NULL字段约束。任何帮助将非常感激。

+0

只需选中IS_NULLABLE国旗,这应该是它 –

回答

3

你可以看一下INFORMATION_SCHEMA.COLUMNS

if (select IS_NULLABLE from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME='my_table' and COLUMN_NAME='end_date') = 'NO' 
begin 
    ALTER TABLE my_table ALTER COLUMN end_date DATETIME NULL 
end 
0

如果你的SQL Server 2005+上,这将返回 “NO”,如果有一个NOT NULL约束:

SELECT IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'tblName' 
AND COLUMN_NAME = 'colName' 
相关问题