MySQL 事务 ROLLBACK 示例代码
时间:2016-05-26 13:51 来源:linux.it.net.cn 作者:IT
mysql>
mysql> delimiter $$
mysql>
mysql> CREATE PROCEDURE myProc(
-> in_from INTEGER,
-> in_to INTEGER,
-> in_amount DECIMAL(8,2))
-> BEGIN
->
-> DECLARE txn_error INTEGER DEFAULT 0 ;
->
-> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN
-> SET txn_error=1;
-> END;
->
-> SAVEPOINT savepoint_tfer;
->
-> UPDATE employee
-> SET salary=in_amount
-> WHERE id=in_from;
->
-> IF txn_error THEN
-> ROLLBACK TO savepoint_tfer;
-> SELECT 'Transfer aborted ';
-> ELSE
-> UPDATE employee
-> SET salary=in_amount
-> WHERE id=in_to;
->
-> IF txn_error THEN
-> ROLLBACK TO savepoint_tfer;
-> SELECT 'Transfer aborted ';
-> END IF;
-> END IF;
->
-> END$$
Query OK, 0 rows affected (0.00 sec)
(责任编辑:IT)
mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc( -> in_from INTEGER, -> in_to INTEGER, -> in_amount DECIMAL(8,2)) -> BEGIN -> -> DECLARE txn_error INTEGER DEFAULT 0 ; -> -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN -> SET txn_error=1; -> END; -> -> SAVEPOINT savepoint_tfer; -> -> UPDATE employee -> SET salary=in_amount -> WHERE id=in_from; -> -> IF txn_error THEN -> ROLLBACK TO savepoint_tfer; -> SELECT 'Transfer aborted '; -> ELSE -> UPDATE employee -> SET salary=in_amount -> WHERE id=in_to; -> -> IF txn_error THEN -> ROLLBACK TO savepoint_tfer; -> SELECT 'Transfer aborted '; -> END IF; -> END IF; -> -> END$$ Query OK, 0 rows affected (0.00 sec) (责任编辑:IT) |