列出SQL Server中不是PK/FK的所有约束

woo*_*gie 1 t-sql sql-server

除了显而易见的主要/外键之外,是否有快速获取数据库中所有约束的列表?

Aar*_*and 8

假设SQL Server 2005+(总是对指定SQL Server 版本有用!):

SELECT 
  [constraint] = name, 
  [object] = QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)),
  [definition]
FROM sys.check_constraints
ORDER BY [object], name;

SELECT 
  [constraint] = name,
  [object] = QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)),
  [definition]
FROM sys.default_constraints
ORDER BY [object], name;
Run Code Online (Sandbox Code Playgroud)

如果要将它们组合到单个结果集中:

SELECT 
  [constraint] = name, 
  type_desc,
  [object] = QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)),
  [definition]
FROM sys.check_constraints
UNION ALL
SELECT 
  [constraint] = name,
  type_desc,
  [object] = QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)),
  [definition]
FROM sys.default_constraints
ORDER BY [object], name;
Run Code Online (Sandbox Code Playgroud)