1. ホーム
  2. sql

[解決済み] PostgreSQLで制約を変更しようとするとき

2023-07-23 22:41:34

質問

Oracleが提供するドキュメントを確認したところ、テーブルを削除せずに制約を変更する方法が見つかりました。 問題は、キーワードを認識しないため、modify でエラーになることです。

EMS SQL Manager for PostgreSQLを使用しています。

Alter table public.public_insurer_credit MODIFY CONSTRAINT public_insurer_credit_fk1
    deferrable, initially deferred;

を使って制約を落とすことで回避することができました。

ALTER TABLE "public"."public_insurer_credit"
  DROP CONSTRAINT "public_insurer_credit_fk1" RESTRICT;

ALTER TABLE "public"."public_insurer_credit"
  ADD CONSTRAINT "public_insurer_credit_fk1" FOREIGN KEY ("branch_id", "order_id", "public_insurer_id")
    REFERENCES "public"."order_public_insurer"("branch_id", "order_id", "public_insurer_id")
    ON UPDATE CASCADE
    ON DELETE NO ACTION
    DEFERRABLE 
    INITIALLY DEFERRED;

どのように解決するのですか?

正しいマニュアル(PostgreSQLから提供されているものです。 ではなく Oracle によって提供されている)正しいマニュアルによると、ALTER TABLE ステートメントで利用可能な modify 制約はありません。

正しいマニュアルのリンクはこちらです。

http://www.postgresql.org/docs/current/static/sql-altertable.html