某个存储过程:
create proc A
@a int
AS
--执行一系列操作
insert into t values(@a)
--执行存储过程B
GO
create proc B
@a int
as
if EXISTS (select * from t where id=@a)
begin
--执行操作C
end
go
现在有这么个问题,按照道理说执行存储过程A
各语句顺序执行,执行存储过程B时肯定能执行到EXISTS 里面的语句,因为在存储过程A
中已经插入了id=@a的记录。
但是现实中这样的存储过程会出现问题,EXISTS 里面的语句可能执行不到。
存储过程A中可能还没执行完insert into t values(@a),或者数据库中还没有提交上就执行到存储过程B中了,我想应该是这样造成的。
交代一下背景,存储过程A调用频率比较高,可能存在并发调用。
出现这样的问题,应该怎么处理呢?有什么方法啊?
请大神指导!