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

giao dịch mysql - quay trở lại bất kỳ ngoại lệ nào

Bạn có thể sử dụng 13.6.7.2. DECLARE ... Cú pháp HANDLER theo cách sau:

DELIMITER $$

CREATE PROCEDURE `sp_fail`()
BEGIN
    DECLARE `_rollback` BOOL DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
    START TRANSACTION;
    INSERT INTO `tablea` (`date`) VALUES (NOW());
    INSERT INTO `tableb` (`date`) VALUES (NOW());
    INSERT INTO `tablec` (`date`) VALUES (NOW()); -- FAIL
    IF `_rollback` THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;
END$$

DELIMITER ;

Để có ví dụ đầy đủ, hãy kiểm tra SQL Fiddle sau .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bảo vệ tên người dùng và mật khẩu MySQL khỏi bị dịch ngược?

  2. '0000-00-00 00:00:00' không thể được biểu thị dưới dạng java.sql. Lỗi dấu thời gian

  3. Làm thế nào để sửa lỗi giá trị chuỗi không chính xác?

  4. Các cách khác nhau để phổ biến người dùng MySQL

  5. Cài đặt MySQL:LỖI:Không thể tạo tiện ích mở rộng gốc đá quý