sql >> データベース >  >> RDS >> PostgreSQL

Postgres:制約がまだ存在しない場合は制約を追加します

    考えられる解決策は、新しい制約を作成する前にDROPIFEXISTSを使用することです。

    ALTER TABLE foo DROP CONSTRAINT IF EXISTS bar;
    ALTER TABLE foo ADD CONSTRAINT bar ...;
    

    information_schemaやカタログをクエリするよりも簡単なようですが、巨大なテーブルでは常に制約が再作成されるため、処理が遅くなる可能性があります。

    編集2015-07-13:Kevは、制約が存在せず、強制されていない場合、私のソリューションは短いウィンドウを作成することを彼の回答で指摘しました。これは事実ですが、トランザクションで両方のステートメントをラップすることで、このようなウィンドウを非常に簡単に回避できます。



    1. ビューでストアドプロシージャを呼び出す方法は?

    2. SQLServerからデータベースのリストを取得する

    3. SQLServerを使用してvarchar列で非ASCII文字を検索する

    4. MariaDBでのTIMEDIFF()のしくみ