2012-10-09 14 views
8

मैं MySQL में एक लेनदेन बनाने की कोशिश कर रहा हूं जो लेनदेन के दौरान अपवाद होने पर वापस रोल करेगा। एक संग्रहीत प्रक्रिया में निम्नलिखित का उपयोग कर।त्रुटि पर रोलबैक के साथ MySQL स्क्रिप्ट

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; 

इस एक संग्रहीत प्रक्रिया लेखन के बिना किया जा सकता है? उदाहरण के लिए निम्न स्निपेट को पहले डालने को वापस रोल करना चाहिए क्योंकि दूसरा सम्मिलन विफल हो जाएगा।

START TRANSACTION; 
INSERT INTO mytable VALUE 'foo1',2,'foo3','foo4' 
INSERT INTO mytable VALUE 'foo1','foo2','foo3','foo4' 
COMMIT 
+0

क्या आप PHP का उपयोग कर रहे हैं? चूंकि यह प्रोग्रामिंग पक्ष में प्राप्त कर सकता है। –

+0

कोई PHP सिर्फ एसक्यूएल। मैं जावा में पूरा कर सकता हूं लेकिन आवश्यकताएं सिर्फ SQL स्क्रिप्ट का अनुरोध करती हैं। – Damien

+0

आपने संग्रहीत प्रक्रिया का उपयोग क्यों नहीं किया? –

उत्तर

5

अगर मैं सही ढंग से समझ आप शामिल करते हुए एक SQL स्क्रिप्ट एक एकल लेन-देन है कि अगर आवेषण के किसी भी असफल रोलबैक होगा में, उदाहरण के आवेषण के लिए, चलाना चाहते हैं। सही है?

मैं इस पर 100% नहीं हूं, लेकिन मुझे पूरा यकीन है कि आपको इसे संग्रहीत प्रक्रिया या प्रोग्रामेटिक रूप से जावा में कहने की आवश्यकता होगी।

+1

हां यह वही है जो मैं करना चाहता हूं और यह निष्कर्ष है कि मैं इंटरनेट खोजने के लिए कैम हूं, लेकिन मुझे विश्वास करना मुश्किल लगता है कि विकल्प एसक्यूएल स्क्रिप्ट से उपलब्ध नहीं है। – Damien

संबंधित मुद्दे