谁能告诉我是否有办法以编程方式确定 Microosft 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
:
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
关于SQL 服务器 : How can I check to see if a field has a "NULL" or "NOT NULL" constraint in place?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129842/