TRUNCATE
暗黙的にコミットするデータ定義言語 (DDL) コマンドです。 DELETE
を使用した場合、何もコミットされませんでした
// Deletes ALL Rows; No WHERE Clause
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_");
理由 TRUNCATE
Rollback Tablespace にコピーせずにテーブル データを直接削除する DDL ステートメントです。 .それが TRUNCATE
の理由です の方が高速ですが、ロールバックできません。
編集 :(私の INSERT もコミットしているのはなぜですか?)
接続を閉じようとしているからです Connection#rollback を呼び出さずに() .
接続の場合 明示的な commit なしで閉じられる またはロールバック; JDBC はここで特に何も義務付けていないため、動作はデータベース ベンダーに依存します。 Oracle の場合、暗黙の commit
そう、ただ rollback()
接続を閉じる前に変更 ついに ブロック
pstmnt = conn.createStatement();
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_1");
System.out.println("Query Executed");
conn.rollback();
System.out.println("Changes rolled back");