【发布时间】:2011-10-11 03:32:30
【问题描述】:
我在存储过程中使用“选择...进行更新”。 但是当存储过程完成时,它会从我一开始所做的“选择...更新”返回结果。有没有办法让它阻塞行而不返回它们?
存储过程代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_save`(
in param_cod_emp char(5),
in param_cod_tab char(5),
in param_des_tab varchar(45),
in param_flg_new char(1))
BEGIN
declare var_cod_tab char(5);
start transaction;
select *
from tabla
where cod_emp=param_cod_emp
for update;
if(param_flg_new='0') then
set var_cod_tab=
(select max(cod_tab)+1
from tabla
where cod_emp=param_cod_emp);
insert into tabla(
cod_emp,
cod_tab,
des_tab)
values(
param_cod_emp,
var_cod_tab,
param_des_tab);
else
udpate tabla where
des_tab=param_des_tab
where cod_emp=param_cod_emp
and cod_tab=param_cod_tab;
end if;
commit;
END
这段代码是让 char 列看起来像 auto_increment 的好方法吗? 非常感谢您的宝贵时间。
【问题讨论】:
标签: mysql stored-procedures select auto-increment