1

明らかな主キー/外部キーの制約に加えて、データベース内のすべての制約のリストを取得する簡単な方法はありますか?

4

1 に答える 1

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;

それらを単一の結果セットに結合する場合:

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;
于 2012-05-18T18:55:36.473 に答える