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

では、Oracle 例外ハンドラの「ROLLBACK」は、私の「ROLLBACK」とどう違うのでしょうか?

    これがオラクルの仕組みです。最初の INSERT は正しく行われました (つまり、テーブルに "1" が挿入されました)。

    次に、「3」、「2」の順に挿入する無名 PL/SQL ブロックを実行し、「1」を挿入しようとすると主キー違反が原因で失敗しました。

    その PL/SQL ブロックの実行中に未処理の例外が発生した場合 (これは、「Oracle 例外ハンドラがここにロールバックする」という意味です)、Oracle は PL/SQL ブロックの先頭にロールバックします。

    EXCEPTION ハンドラを使用して ROLLBACK を発行すると、何かが発生した場合にどうするかを決定するのはあなたです。つまり、CREATE TABLE ステートメントの実行後に暗黙的に行われた COMMIT であった以前の COMMIT へのすべての変更を元に戻すため、次の INSERT "1 " もロールバックされます。



    1. Explainに基づくMySQLの最適化

    2. node.js(express)でMySQLデータを取得し、EJSを使用して印刷します

    3. ユーザー入力によるJDBCトランザクション

    4. 致命的なエラー'stdio.h'Mac OSX10.7.5上のPython2.7.3