sql >> Database >  >> RDS >> Mysql

mysql-transactie - terugdraaien op elke uitzondering

U kunt 13.6.7.2 gebruiken. VERKLAREN ... HANDLER Syntaxis op de volgende manier:

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 ;

Bekijk voor een compleet voorbeeld de volgende SQL Fiddle .



  1. Hoe krijg ik de huidige tijdzone van MySQL?

  2. Waarom ongeldige conversie aangevraagd FOUTCODE:17132?

  3. Hoe UNCOMPRESS() werkt in MariaDB

  4. MySQL - Trigger voor het bijwerken van dezelfde tabel na het invoegen