sql执行问题

一枚小菜 2014-02-08 05:44:02
某个存储过程:

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调用频率比较高,可能存在并发调用。


出现这样的问题,应该怎么处理呢?有什么方法啊?

请大神指导!



...全文
128 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2014-02-09
  • 打赏
  • 举报
回复
这个如果有多个A,同时执行,应该也不会导致exists中没有数据的把。
發糞塗牆 2014-02-08
  • 打赏
  • 举报
回复
高并发的情况下的确会有问题,你的执行操作C能否加载存储过程A中,也就是不分成两个?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧