2015-12-02 10 views
7

मुझे दो आवेषण मिले जो मैं लेनदेन नियंत्रण में रखना चाहता हूं। यदि उनमें से एक दूसरे को विफल करता है तो उसे भी निष्पादित/सम्मिलित नहीं किया जाएगा। यह ठीक काम करता है जब इसऊंट ब्लूप्रिंट एसक्यूएल लेनदेन प्रबंधक

START TRANSACTION; 
INSERT INTO table (field) VALUES (value); 
INSERT INTO table2 (field) VALUES (value); 
COMMIT; 

तरह MySQL में सही कर अब ऊंट का उपयोग कर मैं पहले से ही

<to uri="sql:START TRANSACTION; INSERT INTO table (field) VALUES (value);INSERT INTO table2 (field) VALUES (value);COMMIT;"/> 

जो एक एसक्यूएल सिंटेक्स त्रुटि पैदा करता है की कोशिश की। दूसरी बात मैंने कोशिश की

<to uri="sql:START TRANSACTION"/> 
<to uri="sql:INSERT INTO table (field) VALUES (value)"/> 
<to uri="sql:INSERT INTO table2 (field) VALUES (value)"/> 
<to uri="sql:COMMIT"/> 

जो काम करता है, लेकिन अगर एक डालने में विफल रहता है एक दूसरे को अभी भी मार डाला और डाला जा रहा है।

मुझे यह http://camel.apache.org/transactional-client.html भी मिला, लेकिन मैं ब्लूप्रिंट का उपयोग कर रहा हूं और ये उदाहरण केवल वसंत के लिए प्रतीत होते हैं। तो अगर किसी को ऊंट ब्लूप्रिंट के साथ ऐसा करने का अच्छा उदाहरण मिल गया तो यह बहुत अच्छा होगा।

क्या कोई मुझे ऊंट में ऐसा करने में मदद कर सकता है?

+0

यह कैसे काम करता है? मेरा मतलब है कि आपकी यूरी सिर्फ एक एसक्यूएल कथन है। इसके साथ कोई घटक नहीं है। क्या आप शायद अपना पूरा मार्ग यानी Blueprint.xml पोस्ट कर सकते हैं। – Namphibian

+0

ओह श्री "एसक्यूएल:" भूल गए - "अब इसे – Milla

+0

आईच डांके इहेन, दास ईइन मेनगे हेल्फ़ेन अगर मुझे सही ढंग से मेरा Deutsch याद है। – Namphibian

उत्तर

0

यकीन है कि "इंजन" InnoDB (नहीं MyISAM) की हुई है। माईसाम चुपचाप लेनदेन वक्तव्यों को अनदेखा करता है (START, COMMIT)।

mysql कमांडलाइन उपकरण का उपयोग करें, और SHOW CREATE TABLE ... करें। तालिका के अंत में यह इंजन निर्दिष्ट करेगा।

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