【问题标题】:How to select all automatically named constrains in tables, sql server如何选择表中所有自动命名的约束,sql server
【发布时间】:2018-10-20 02:04:19
【问题描述】:

我有一个数据库,其中有一些表,一些字段有约束。我自己命名了其中一些约束,但其他一些约束的名称是自动生成的。

我想选择所有这些约束。我正在使用

SELECT * FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'

获取所有约束。但是有很多,我无法手动找到它们。这些名称无法使用字母数字字符(如 PK__getParen__50EEF97F6BC33CCA)来预测 如何区分我自己命名和自动命名的约束?

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

sys.check_constraintssys.key_constraintssys.default_constraintssys.foreign_keys 视图包含一个列 is_system_named,它应该告诉您约束的名称是否是自动生成的。

【讨论】:

    【解决方案2】:

    尝试类似:

     SELECT * 
        FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
        WHERE CONSTRAINT_NAME NOT LIKE 'PK_%'
    

    【讨论】:

      【解决方案3】:

      在对象资源管理器上的“数据库”文件夹中的“系统数据库”文件夹中的“主”数据库文件夹中的“系统视图”文件夹中的“系统视图”文件夹中提供了许多与 CONSTRAINT 相关的视图。 .

      即:除非已经打开,否则从View 选项卡打开Object Explorer

      Databases > System Databases > master > Views > System Views.

      只需将它们作为(例如)SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS 运行,您应该会找到所需的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        • 1970-01-01
        • 2016-10-01
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多