Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MYSQL Câu lệnh If trong giao dịch gây ra lỗi

MySQL không nhận dạng được câu lệnh bắt đầu bằng từ khóa IF như một câu lệnh SQL hợp lệ.

IF câu lệnh chỉ hoạt động trong ngữ cảnh của một câu lệnh ghép (nghĩa là một khối câu lệnh nằm giữa BEGINEND . Hiện tại, câu lệnh ghép chỉ được hỗ trợ trong ngữ cảnh của một chương trình được lưu trữ (thủ tục, hàm hoặc trình kích hoạt được lưu trữ.)

http://dev.mysql.com/doc/refman /5.5/en/begin-end.html

Để kiểm tra, hãy thử ...

DELIMITER //

CREATE PROCEDURE usp_test_transaction()
BEGIN
  DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
  START TRANSACTION;

  -- whatever DML operations and SELECT statements you want to perform go here

  IF (1=1) THEN
    COMMIT;
  ELSE
    ROLLBACK;
  END IF;
END//

DELIMITER ;

CALL usp_test_transaction;

(LƯU Ý:Tôi không ủng hộ ở đây rằng các giao dịch được xử lý bên trong thủ tục được lưu trữ. Sở thích cá nhân của tôi là KHÔNG làm điều này và thay vào đó xử lý các giao dịch ở cấp độ cao hơn. Nhưng ví dụ trên sẽ hoạt động; Tôi tin rằng MySQL hỗ trợ gọi BẮT ĐẦU GIAO DỊCH , COMMIT và ROLLBACK trong ngữ cảnh của một thủ tục được lưu trữ.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi tên đã tạo của khóa ngoại trong Hibernate

  2. MySQL GROUP BY hành vi

  3. MySQL thêm 12 giờ vào một trường thời gian

  4. Cách tìm các giá trị không phải dạng số trong một cột trong MySQL

  5. 2 Khóa ngoại tham chiếu đến cùng một Khóa chính trong MySQL