PostgreSQL9.1を使用しています。
common.client_contact
このコードを使用して外部キーを作成したテーブルがあります。
ALTER TABLE common.client_contact
ADD FOREIGN KEY (contact_id) REFERENCES common.contact_item(id);
このコードを実行すると、異なる名前(、、など)の外部キーがいくつか取得さclient_contact_contact_id_fkey1
れます。client_contact_contact_id_fkey2
client_contact_contact_id_fkey3
したがって、新しい制約を作成する前に、それが存在するかどうかを確認する必要があります。
この制約がpg_constraint
テーブルに存在するかどうかを確認します。
SELECT * FROM pg_constraint WHERE conname = 'client_contact_contact_id_fkey'
そして今、私はそれらを一緒に組み合わせる必要があります。何かのようなもの
IF NOT EXISTS
(SELECT * FROM pg_constraint WHERE conname = 'client_contact_contact_id_fkey')
ALTER TABLE common.client_contact
ADD CONSTRAINT client_contact_contact_id_fkey
FOREIGN KEY (contact_id) REFERENCES common.contact_item(id)
あるいは単に
ALTER TABLE common.client_contact
ADD FOREIGN KEY IF NOT EXISTS (contact_id) REFERENCES common.contact_item(id)
ただし、これら2つのクエリは構文エラーを生成します。では、PostgreSQLでどのようにそれを行うことができますか?