TRUNCATE
adalah perintah Data Definition Language (DDL) yang dilakukan secara implisit. Itu tidak akan melakukan apa pun, jika Anda menggunakan DELETE
sebagai gantinya.
// Deletes ALL Rows; No WHERE Clause
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_");
Alasan TRUNCATE
adalah pernyataan DDL yang menghapus data tabel secara langsung tanpa menyalinnya ke Rollback Tablespace . Itu sebabnya TRUNCATE
lebih cepat tetapi tidak dapat dibatalkan.
EDIT :(Mengapa INSERT saya melakukan juga?)
Itu karena Anda menutup Koneksi tanpa memanggil Connection#rollback () .
Jika Koneksi ditutup tanpa komit yang eksplisit atau kembalikan; JDBC tidak mengamanatkan apa pun secara khusus di sini dan karenanya perilakunya tergantung pada vendor basis data. Dalam kasus Oracle, komit imp implisit dikeluarkan.
JADI, cukup rollback()
perubahan Anda sebelum menutup Koneksi di akhirnya blokir
pstmnt = conn.createStatement();
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_1");
System.out.println("Query Executed");
conn.rollback();
System.out.println("Changes rolled back");