TRUNCATE
es un comando de lenguaje de definición de datos (DDL) que se confirma implícitamente. No habría cometido nada si hubiera usado DELETE
declaración en su lugar.
// Deletes ALL Rows; No WHERE Clause
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_");
La razón TRUNCATE
es una instrucción DDL es que elimina los datos de la tabla directamente sin copiarlos en el Rollback Tablespace . Por eso TRUNCATE
es más rápido pero no se puede revertir.
EDITAR :(¿Por qué mis INSERT también se están confirmando?)
Eso es porque estás cerrando tu Conexión sin llamar a Connection#rollback () .
Si una Conexión se cierra sin un commit explícito o una reversión; JDBC no exige nada en particular aquí y, por lo tanto, el comportamiento depende del proveedor de la base de datos. En el caso de Oracle, un compromiso implícito se emite.
SO, solo rollback()
sus cambios antes de cerrar su Conexión en el finalmente bloquear
pstmnt = conn.createStatement();
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_1");
System.out.println("Query Executed");
conn.rollback();
System.out.println("Changes rolled back");