web-dev-qa-db-ja.com

postgresqlの一意制約の名前を取得する方法は?

Postgresqlテーブルから一意制約を削除する必要がありますが、スキーマで名前を付けていません。そのような制約の名前を取得する方法、またはそれを削除する方法を誰かが知っていますか?

29
Pupkov-Zadnij

それは次のようなものです(単一列制約の場合):

tableName_columnName_key

定数名を取得するには(psqlで)書き込みます:

\d tableName

または pg_constraint システムカタログ:

SELECT conname
FROM pg_constraint
WHERE conrelid =
    (SELECT oid 
    FROM pg_class
    WHERE relname LIKE 'tableName');

また、オブジェクトツリーのpgAdminから取得することもできます。

40
SELECT conname
FROM pg_constraint
WHERE conrelid = 'mytable'::regclass::oid
11
strahov