【问题标题】:SQL default value constraint INFORMATION_SCHEMASQL 默认值约束 INFORMATION_SCHEMA
【发布时间】:2012-11-14 11:25:19
【问题描述】:

我的表中有一个具有默认值约束“DF_DOC_DMA_PLACE_1_dma_id”的列

我想删除该列,但首先我需要删除该约束。问题是该表存在于许多数据库中,并且在其中一些数据库中不存在约束。如何先检查约束是否存在,然后再删除?

我知道 INFORMATION_SCHEMA 中的视图,但我找不到具有此约束的视图?你能告诉我默认值约束在哪里吗?谢谢

【问题讨论】:

  • 顺便提一下:information_schema 是 sql server 有的 ANSI 视图,如果你只使用 ms sql server,最好使用 sys.sql server。视图,它们是 sql-server-only 视图,并且在 msdn 上有详细记录;)

标签: sql sql-server information-schema


【解决方案1】:

请使用以下查询查找每个表的默认约束。

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc = 'DEFAULT_CONSTRAINT'

【讨论】:

    【解决方案2】:

    根据你的发现尝试一些东西......

    select t.name as 'table', c.[name] as 'column' ,dc.[name],dc.[definition]
    from sys.tables as t
    join sys.columns as c on (c.[object_id] = t.[object_id])
    join sys.default_constraints as dc on (dc.[object_id] = c.[default_object_id])
    

    【讨论】:

    • 有没有办法列出所有使用提到的列的存储过程?
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多