DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
BEGIN
ROLLBACK;
END;
START TRANSACTION;
UPDATE tbl_order SET TransactionID="abc" WHERE OrderID=1;
UPDATE tbl_order SET TransactionID="xyz" WHERE OrderID=;
UPDATE tbl_order SET TransactionID="zzz" WHERE OrderID=13;
COMMIT;
किसी कारण आदेश 1 के लिए
और 13 त्रुटि रोलबैक के बिना भर रहे हैं और मैं बाहर निकलने के Hadler के लिए वाक्यविन्यास त्रुटि मिलती है।mysql लेन-देन से निपटने
Query: DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND BEGIN ROLLBACK
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
BEGIN
ROLLBACK' at line 1
कोई मुझे यह पता लगाने की मैं गलत क्या कर रहा मदद कर सकते हैं?
अग्रिम धन्यवाद
संपादित
अद्यतन सेट transactionId tbl_order = "xyz" कहां OrderID =;
जानबूझकर है
शॉट के दौरान उत्पन्न हो सकती है: 'रोलबैक के बाद अर्धविराम है 'समय से बाहर निकलने वाले हैंडलर को समाप्त कर रहे हैं? – sarnold
नहीं .. यह – robert
की मदद नहीं करता है, इसलिए वैसे भी मैं आगे बढ़ गया और त्रुटियों को संभालने के लिए mysql क्वेरी का उपयोग करने के बजाय कोड के साथ किया। एक खुला कनेक्शन मानना MySqlCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.Transaction = conn.BeginTransaction(); कोशिश करें { cmd.CommandText = strSQL; cmd.ExecuteNonQuery(); cmd.Transaction.Commit(); } पकड़ो (अपवाद पूर्व) { cmd.Transaction.Rollback(); dbLog.ErrorFormat ("*** लेनदेन रोलबैक: {0} \ n पैराम्स: {1} \ n पूर्व: {2} \ n", strSQL, ex.InnerException); } – robert