mysql 存储过程 事务 捕捉到错误进行roolback
案例一
- mysql> DELIMITER $$
- mysql> DROP PROCEDURE IF EXISTS `transaction1`$$
- Query OK, 0 rows affected (0.00 sec)
- mysql> CREATE PROCEDURE transaction1()
- -> BEGIN
- -> set autocommit = 0;
- -> insert IGNORE into t3 (id) values (1);
- -> insert IGNORE into t3 (idrr) values (2);
- -> if @@warning_count <> 0 then
- -> rollback;
- -> else
- -> commit;
- -> end if;
- -> END$$
- Query OK, 0 rows affected (0.00 sec)
- mysql> DELIMITER ;
- mysql> call transaction1();
- Query OK, 0 rows affected, 1 warning (0.06 sec)
- mysql> select * from t3;
- Empty set (0.00 sec)
- mysql>
案例二
- mysql> DELIMITER $$
- mysql> DROP PROCEDURE IF EXISTS `transaction1`$$
- Query OK, 0 rows affected (0.00 sec)
- mysql> CREATE PROCEDURE transaction1()
- -> BEGIN
- -> set autocommit = 0;
- -> insert IGNORE into t3 (id) values (1);
- -> insert IGNORE into t3 (idrr) values (2);
- -> if @@warning_count <> 0 ||@@error_count>0 then
- -> rollback;
- -> else
- -> commit;
- -> end if;
- -> END$$
- Query OK, 0 rows affected (0.00 sec)
- mysql> DELIMITER ;
- mysql> call transaction1();
- Query OK, 0 rows affected, 1 warning (0.06 sec)
- mysql> select * from t3;
- Empty set (0.00 sec)
- mysql>