Oracle 遅延制約 設定 deferred deferrable

Oracle において 遅延制約 の設定を示す。

一意制約

遅延可能な一意制約は、非ユニーク索引で実装される。

  ×ユニーク索引では遅延できない
  CREATE UNIQUE INDEX order_items_uk ON oreder_items ( order_id, product_id );
  ALTER TABLE order_items ADD CONSTRAINT order_items_uk
    unique ( order_id, product_id ) deferrable;
  ○非ユニーク索引では遅延可能
  CREATE INDEX order_items_uk ON oreder_items ( order_id, product_id );
  ALTER TABLE order_items ADD CONSTRAINT order_items_uk
    unique ( order_id, product_id ) deferrable;

テーブル作成

テーブル作成時には以下を設定する。

  create table const_ini_deffer
  (
  id number,
  constraints unq_id unique (id) initially deferred deferrable
  );

セッション中

セッション中では以下コマンドで切り替える(セッション毎)。

  alter session set constraints = immediate;
  alter session set constraints = deferred;

テーブル作成後

テーブル作成後には以下コマンドで切り替える。

  set constraint unq_id immediate;
  set constraint unq_id deferred;

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage