有人可以让我知道是否可以通过编程方式确定Micorosft 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
所以我想将my_table.end_date从“ NOT NULL”更改为“ NULL”(如果尚未更改)。我只是不确定括号中的哪个部分。
我知道如何查询dbo.sysobjects是否存在现有字段,现有外键约束之类的东西(已经有一些线程在上面了),但是我不确定如何专门检查NULL / NOT NULL字段约束。任何帮助将非常感激。
您可以看一下INFORMATION_SCHEMA.COLUMNS:
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