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;
vì một số lý do thứ tự 1 và 13 được lấp đầy mà không có rollback và tôi nhận được lỗi cú pháp cho trình quản lý thoát.xử lý lỗi giao dịch 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
ai đó có thể giúp tôi tìm ra những gì tôi đang làm sai?
Cảm ơn trước
EDIT
CẬP NHẬT tbl_order SET transactionId = "xyz" WHERE OrderID =;
là cố ý
Shot trong bóng tối: là dấu chấm phẩy sau 'rollback 'kết thúc sớm xử lý thoát? – sarnold
nope .. nó không giúp – robert
vì vậy dù sao tôi đã đi trước và đã làm nó với mã thay vì sử dụng truy vấn mysql để xử lý lỗi. Giả sử một kết nối mở MySqlCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.Transaction = conn.BeginTransaction(); thử { cmd.CommandText = strSQL; cmd.ExecuteNonQuery(); cmd.Transaction.Commit(); } bắt (Ngoại lệ) { cmd.Transaction.Rollback(); dbLog.ErrorFormat ("*** Giao dịch Rollback: {0} \ n Params: {1} \ n Ví dụ: {2} \ n", strSQL, ex.InnerException); } – robert