一个事务对应多条存储过程
时间:2011-12-06
来源:互联网
我有A,B,C,D四个存储过程,总是一起按ABCD的顺序一起执行,我能不能在A(A是查询库存数量的)里开始一个事务
CREATE PROCEDURE [A]
(@doctorname [varchar](50), @czyname [varchar](50))
AS
BEGIN TRANSACTION tran1 --名为tran1的事务开始
INSERT INTO [yd].[dbo].[sale] ( [doctorname],[czyname])
VALUES ( @doctorname, @czyname)
select SCOPE_IDENTITY( ) AS djh
return
GO
然后在D里用
If @@error<>0
If @@TranCount=1
Rollback Transaction tran1 --中间出现事务每次要进行以此判断
else
If @@TranCount=1
Commit TRANSACTION tran1
结束事务。
在中间的存储过程B,C里不用再写什么代码了吗?系统会认为存储过程A,B,C,D都在事务tran1里面吗(其中存储过程C需要多次调用)?
在C/S结构里,如果1号工作站先执行存储过程A(就是先开始执行事务tran1),这时2号工作站也调用存储过程A还会执行事务tran1吗?就是同时执行事务tran1?(尽管不是同时开始,但1号工作站的tran1事务还没执行完毕,2号工作站的tran1事务也会执行吗?)
CREATE PROCEDURE [A]
(@doctorname [varchar](50), @czyname [varchar](50))
AS
BEGIN TRANSACTION tran1 --名为tran1的事务开始
INSERT INTO [yd].[dbo].[sale] ( [doctorname],[czyname])
VALUES ( @doctorname, @czyname)
select SCOPE_IDENTITY( ) AS djh
return
GO
然后在D里用
If @@error<>0
If @@TranCount=1
Rollback Transaction tran1 --中间出现事务每次要进行以此判断
else
If @@TranCount=1
Commit TRANSACTION tran1
结束事务。
在中间的存储过程B,C里不用再写什么代码了吗?系统会认为存储过程A,B,C,D都在事务tran1里面吗(其中存储过程C需要多次调用)?
在C/S结构里,如果1号工作站先执行存储过程A(就是先开始执行事务tran1),这时2号工作站也调用存储过程A还会执行事务tran1吗?就是同时执行事务tran1?(尽管不是同时开始,但1号工作站的tran1事务还没执行完毕,2号工作站的tran1事务也会执行吗?)
作者: oracle185 发布时间: 2011-12-06
不能
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。
作者: Haiwer 发布时间: 2011-12-06
引用 1 楼 haiwer 的回复:
不能
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。
不能
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。

作者: fredrickhu 发布时间: 2011-12-06
引用 1 楼 haiwer 的回复:
不能
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。
不能
一般应该写个存储过程E,来调用ABCD
在E开始,开事务,分别调用ABCD,每个调用后检查返回状态,失败的回滚,最后提交。
但在前台ABCD必须分开调用,A先检查库存数量,如果通过再执行B(就是我上面写的那个存储过程A的代码其实是B的)返回标识字段的值:djh,再循环调用C(每次调用都要用到B返回的djh),最后才调用D修改库存,如果把这些操作都放在一个新建的E里,那操作B是没法返回标识字段的值djh给C啊!
如果在E里一起调用ABCD,怎么解决返回标识字段的值djh的问题啊?
作者: oracle185 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28