请问在存储过程中如何控制事务以及返回SQL的执行情况?(最好能给个例子)

chjcwl 2002-09-06 09:06:00
我做了一个存储过程,其中有不少的增删改操作,由于是多用户环境,使用中会发现使用中有时会出现存储过程不起作用而且锁表现象,我想应该是事务的问题,但我不知如何控制?能给个例子吗?
...全文
85 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzcwl 2002-09-11
  • 打赏
  • 举报
回复
那触发器如果作为一种特殊存储的话,那他的事务如何解释呢?
如果应用程序的事务和SP内事务无关的话那不是会造成触发器做了我不想做的事了吗?
klend 2002-09-11
  • 打赏
  • 举报
回复
学习
leimin 2002-09-11
  • 打赏
  • 举报
回复
"那是不是说存储过程即使定义了事物并提交,如果在应用程序中的事务没有提交而且回滚的话."

我认为这是SP的事务已经提交了,你要在CLIENT APPLICATION控制SQL 的事务提交,可以参照Yang_(扬帆破浪)的方法,通过SP的RETURN CODE判断SP运行的状态,再判断是否COMMIT OR ROLLBACK!
chjcwl 2002-09-11
  • 打赏
  • 举报
回复
那是不是说存储过程即使定义了事物并提交,如果在应用程序中的事务没有提交而且回滚的话,存储过程等于没有执行是吗?
larson 2002-09-10
  • 打赏
  • 举报
回复
如果上述答复能解决你的问题,你可能需要反思啦!
microlong 2002-09-10
  • 打赏
  • 举报
回复
特殊的存储过程:
create trigger ins_upd_orders
on orders for insert,update
as
if exists(select * from orders)
begin
raiserror(60000,16,1)
rollback tran
update employees set employeeid =16 where employeeid =7
end
zhxfzhxf1 2002-09-10
  • 打赏
  • 举报
回复
关注
chjcwl 2002-09-10
  • 打赏
  • 举报
回复
高手能再说说在SQL中存储过程中事务和应用程序中事务的关系吗?
好象如果在应用程序中也使用事务的话,还是会出问题的呀?
freezwy 2002-09-07
  • 打赏
  • 举报
回复
Yang_(扬帆破浪)已经说的很清楚了,你要看看“存储过程”中返回值的问题,结合begin transaction xx
commit transaction xx
rollback transaction xx
就可以了。
Yang_ 2002-09-07
  • 打赏
  • 举报
回复
存储过程:

create procedure proc_test
@Value int,
@Id int
as
BEGIN TRAN t1
update test1 set value=@value where id=@id
if @@error<>0 goto err_h
update test2 set value=@value where id=@id
if @@error<>0 goto err_h
COMMIT TRAN t1
return 0
err_h:
ROLLBACK TRAN t1
return -1
go
yxsalj 2002-09-07
  • 打赏
  • 举报
回复
考虑动态生成表名,比如:
select @tableName=year(getdate())+month(getdate())+day(getdate())+minute(getdate())+second(getdate())
iamxia 2002-09-06
  • 打赏
  • 举报
回复
...

34,838

社区成员

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

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