mysql事务&批量插入

参考教程MySQL存储过程 事务transaction

操作mysql数据库时如果有大量sql操作需要控制要么一起成功,要么一起失败的时候,就需要用到事务操作,一旦使用事务在捕获到失败后就需要 rollback 回滚操作,如果不进行错误检测,可能会导致部分成功(因为没做报错判断就直接commit提交了)

一次性批量插入200条记录到数据库,并记录下每条插入记录的id

delimiter //
drop procedure if exists test_insert;
create procedure test_insert()

BEGIN
DECLARE i int DEFAULT 1;
DECLARE insert_times int DEFAULT 200;
DECLARE insert_id int DEFAULT 0;

DECLARE t_error INTEGER DEFAULT 0;    
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 

start transaction; #--整个存储过程指定为一个事务 


WHILE i < insert_times DO

insert into test(record)values(concat('这是插入的第',i,'记录'));
select last_insert_id() into insert_id;#获取mysql当前连接用户最近一次插入的id
update test set remark=concat('插入id=',insert_id) where id=insert_id;

SET i = i + 1;
END WHILE;


 IF t_error = 1 THEN    
            ROLLBACK;    
 ELSE    
            COMMIT;    
 END IF;    

select t_error;   #返回标识位的结果集;


END
//

call test_insert();

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/mysql事务批量插入/

赞赏

微信赞赏支付宝赞赏

发表评论