create procedure `testdb`.`proc_test`(
IN id_ varchar(32),
IN name_ varchar(64)
)
begin
declare exit handler for sqlexception rollback;
declare exit handler for sqlwarning rollback;
/*
必须声明 exit handler for sqlexception 和 sqlwarning,否则mysql不会自动回滚。
exit handler 声明必须在声明的最后部分,紧随 start transaction。
不要在 start transaction .. commit 中声明任何变量。
*/
start transaction;
update userinfo set emp_nm=name_ where emp_no=id_;
insert userinfo(emp_no,emp_nm) value(id_,name_);
commit;
end