现有一张表aaa,信息如下:
存储过程tx_demo如下:
DELIMITER $$
CREATE
PROCEDURE `my_data`.`tx_demo`()
BEGIN
INSERT INTO aaa (NAME)VALUES('zhangsan');
INSERT INTO aaa (NAME,pwd)VALUES('zhangsan','123456');
END$$
DELIMITER ;
第二句SQL明显会执行错误,在执行call tx_demo()以后表内多了一行zhangsan的记录,并没有事务控制,现在加入事务控制如下:
DELIMITER $$
CREATE
PROCEDURE `my_data`.`tx_demo2`()
BEGIN
#事务标识
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;
INSERT INTO aaa (NAME)VALUES('zhangsan');
INSERT INTO aaa (NAME,pwd)VALUES('zhangsan','123456');
IF
t_error = 1
THEN
#失败回滚。
ROLLBACK;
ELSE
#成功提交。
COMMIT;
END IF;
END$$
DELIMITER ;