2017-08-09 2 views
0

プログラマーが作成したConstraintを無効にしてから、最初に "有効にして無効にする"とした後すぐに有効にしたOracle PL-それを "検証する"。 は、私はブロックの下の背後にある理由を理解する上でつまずいてしまった。ただ一つの文で書かれた上に持つことに間違っているなぜ誰かがNoValidateで制約を有効にした後にOracleで検証する

 EXECUTE IMMEDIATE 
       'ALTER TABLE ' 
      || i_table_name 
      || ' ENABLE NOVALIDATE CONSTRAINT ' 
      || i_constraint_name; 

     EXECUTE IMMEDIATE 
       'ALTER TABLE ' 
      || i_table_name 
      || ' ENABLE VALIDATE CONSTRAINT ' 
      || i_constraint_name; 

何? 例:「ALTER TABLE EMP ENABLE EMP_PK」

この疑問を解決してください。

答えて

1

Oracleは整合性制約のthe documentation

効率的に使用するには、この順序を推奨しています。次の順序で整合性に 制約の状態を使用して手順

は最高の利益を確保することができます。

  • 状態を無効にする。
  • 操作(load、export、import)を実行します。
  • novalidate状態を有効にします。
  • 状態を有効にします。

にこの順序を制約を使用していくつかの利点があります:

  • ませロックが保持されません。
  • すべての制約は、同時に状態を有効にすることができます。
  • 制約を有効にすることは並行して行われます。
  • テーブルでの並行処理が許可されています。
+0

驚くばかりです。説明をいただきありがとうございます。私は今の推論を理解している。 – Rupesh

関連する問題