TRUNCATE
एक डेटा डेफिनिशन लैंग्वेज (DDL) कमांड है जो परोक्ष रूप से कमिट करती है। अगर आपने DELETE
. का इस्तेमाल किया होता तो यह कुछ भी नहीं करता इसके बजाय बयान।
// Deletes ALL Rows; No WHERE Clause
pstmnt.executeQuery("DELETE FROM bd_vehicles_temp_");
कारण TRUNCATE
एक डीडीएल कथन है कि यह तालिका डेटा को सीधे रोलबैक टेबलस्पेस में कॉपी किए बिना हटा देता है . इसीलिए TRUNCATE
तेज़ है लेकिन वापस नहीं लाया जा सकता।
संपादित करें :(मेरे INSERT भी क्यों प्रतिबद्ध हैं?)
ऐसा इसलिए है क्योंकि आप अपना कनेक्शन बंद कर रहे हैं कॉल किए बिना Connection#rollback () ।
अगर एक कनेक्शन स्पष्ट प्रतिबद्ध . के बिना बंद है या एक रोलबैक; JDBC यहाँ विशेष रूप से कुछ भी अनिवार्य नहीं करता है और इसलिए व्यवहार डेटाबेस विक्रेता पर निर्भर है। Oracle के मामले में, एक निहितार्थ प्रतिबद्ध जारी किया जाता है।
तो, बस 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");