SQL 服务器 : How can I check to see if a field has a "NULL" or "NOT NULL" constraint in place?

标签 sql sql-server database constraints

谁能告诉我是否有办法以编程方式确定 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/

相关文章:

mysql - 如果数据为空,则阻止显示结果?

MYSQL 从同一个表中选择并连接多个 where AND 子句

sql - 使用查询 SQL Server 2005 选择 DATEADD 分钟

sql-server - 了解 SQL 读取已提交和读取未提交

database - facebook 对他们的数据库进行了多少非规范化以通过网络分解事物并因此缩小表格并加快系统速度?

sql - 在 MSSQL 中打印某一特定查询时遇到困难

sql - 我需要将 HTML 电子邮件存储在数据库中。那是个坏主意吗?

mysql - 如何在另一个表中以特定模式显示一个表的数据

mysql - 正向工程 MySQL 模型时出错

java - 与jsp的数据库连接