mysql存储过程(触发器)中写事务请教

MySql 码拜 9年前 (2016-02-14) 1133次浏览
在下面的触发器中的delete和insert,需要写一个事务,本人对mysql存储过程的事务不熟,还请各位高手请教,有点急,非常感谢
DROP TRIGGER IF EXISTS trigger_products_data_update;
CREATE TRIGGER trigger_products_data_update
AFTER UPDATE ON erp_products_data
FOR EACH ROW
BEGIN
declare n ,num int;
set n=1;
set num=char_length(new.products_suppliers_ids)-char_length(replace(new.products_suppliers_ids,”,”,””))+1;
DELETE from erp_products_suppliers WHERE sku=new.products_sku;
while (n<=num)
do
insert into erp_products_suppliers(sku,suppliers_ids) values(new.products_sku,SUBSTRING_INDEX(SUBSTRING_INDEX(new.products_suppliers_ids,”,”,n),”,”,-1));
set n=n+1;
end while;
END;
解决方案

40

DROP TRIGGER IF EXISTS trigger_products_data_update;
CREATE TRIGGER trigger_products_data_update
AFTER UPDATE ON erp_products_data
FOR EACH ROW
BEGIN
declare n ,num int;
set n=1;
set num=char_length(new.products_suppliers_ids)-char_length(replace(new.products_suppliers_ids,”,”,””))+1;
start  transaction;
DELETE from erp_products_suppliers WHERE sku=new.products_sku;
while (n<=num)
do
insert into erp_products_suppliers(sku,suppliers_ids) values(new.products_sku,SUBSTRING_INDEX(SUBSTRING_INDEX(new.products_suppliers_ids,”,”,n),”,”,-1));
set n=n+1;
commit;
end while;
END;

40

LZ你好
下面这篇文档详细简洁的讲述了触发器和存储过程,
http://www.jb51.net/article/32007.htm

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql存储过程(触发器)中写事务请教
喜欢 (0)
[1034331897@qq.com]
分享 (0)