Mysql
 sql >> Baza danych >  >> RDS >> Mysql

transakcja mysql - wycofaj każdy wyjątek

Możesz użyć 13.6.7.2. DECLARE ... HANDLER Składnia w następujący sposób:

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 ;

Aby zobaczyć pełny przykład, zapoznaj się z następującym SQL Fiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy MySQL indeksuje kolumny kluczy obcych automatycznie?

  2. Zmienić domyślny zestaw znaków MySQL na UTF-8 w my.cnf?

  3. Jak zamawiać według daty w MySQL

  4. Jak odwrócić bazę danych w środowisku MySQL Workbench

  5. Instalowanie WordPressa 5 na ZEIT teraz z hostingiem MySQL