1

私はOracleSQLデータベースに取り組んでいます。テーブルの主キーの値を更新する必要があるストアドプロシージャがあります。その値は、別のテーブルの外部キーによって参照されます。

その外部キー制約を無効にしてから、更新を実行してから再度有効にすると、これが機能します。

問題は、外部キーのステータスを変更した後に問題が発生した場合、更新前にロールバックできないことです。

再開します:

  1. アップデート
  2. ALTER FOREIGN KEY
  3. ロールバック

更新を実行する前の状態にロールバックできる方法はありますか?ある場合はどのようにロールバックできますか?

ありがとう。

4

1 に答える 1

3

残念ながら違います。ROLLBACKALTER TABLEはDDLコマンドであり、DDLステートメントを編集することはできません。したがって、このコマンドの前にロールバックすることはできません。

解決策は、外部キーを遅延検証に変更することです。次に、onaトランザクションで2つの更新を使用して、主キーと外部キーを変更できます。制約は次のコミットで検証されます。

于 2012-10-16T13:28:55.647 に答える