事务看不出有什么问题,但是根据我的经验,多用户系统正式应用时此存储过程绝对不行。
因为多个用户可能同时进入事务,这是出错的源头。我多次犯过此类错误(因为我以为事务是唯一锁定的)。
我建议你把begin trans放到第一行,并把SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 这个句子放到begin trans前面,可以一劳永逸地解决问题,如果你执行的事务比较耗时时,还需要在客户端增加超时时间