sql >> データベース >  >> RDS >> Mysql

mysqlトランザクション-例外があればロールバックします

    13.6.7.2を使用できます。 DECLARE...HANDLER構文 次のように:

    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 ;
    

    完全な例については、次の SQLFiddle を確認してください。 。



    1. varcharまたはintの主キーを使用してテーブルを設計する必要がありますか?

    2. 文字列がMySQLの正規表現と一致するかどうかを検出する3つの方法

    3. ClusterControlを使用したSpiderでのMariaDBシャーディングのデプロイ

    4. OracleのNLS_COLLATION_NAME()関数