从默认约束中获取值

时间:2015-10-15 11:35:21

标签: sql sql-server constraints default-constraint

我需要将默认约束值从0更改为1.这可以通过以下方式轻松完成:

ALTER TABLE table DROP CONSTRAINT X
ALTER TABLE table ADD CONSTRAINT X default (1) for table.column

问题在于,每次在数据库上运行modelupdate时,我都不想删除并创建新约束。这就是我想运行此代码的原因 IF 约束的值为0.

是否可以在SQL中检查默认约束的值,如果是,如何?

2 个答案:

答案 0 :(得分:5)

您可以找到默认约束的“定义”,如下所示:

SELECT 
    DefaultConstraintName = df.name,
    df.definition
FROM 
    sys.default_constraints df
INNER JOIN 
    sys.tables t ON df.parent_object_id = t.object_id
INNER JOIN 
    sys.columns c ON c.object_id = df.parent_object_id AND df.parent_column_id = c.column_id
WHERE 
    t.Name = N'YourTableNameHere'
    AND c.Name = N'YourColumnNameHere'

然而,这将返回默认值的字符串表示形式 - 而不是实际值本身(无论它是什么数据类型)。但这可能有助于你找到你需要的东西

答案 1 :(得分:0)

您可以从下面的 information_schema 视图中看到该列的默认值。

SELECT COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'TableName' and COLUMN_NAME = 'ColumnName'