100分,严重讨论 所谓嵌套就是说insert调用了update,update又调用了insert,你写了两个存储过程后调用exec来执行等于是顺序执行了两个存储过程,与嵌套没有任何关系,这是概念上的区别,你可以看看程序设计中关于嵌套的定义 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是事务嵌套事务处理嵌套的语法和对@@TRANCOUNT的影响BEGIN TRAN @@TRANCOUNT+1COMMIT TRAN @@TRANCOUNT-1ROLLBACK TRAN 使@@TRANCOUNT回归0SAVE TRAN 不影响@@TRANCOUNT举例SELECT '事务处理前', @@TRANCOUNT --值为 0BEGIN TRAN SELECT '第一个事务', @@TRANCOUNT --值为 1 SELECT * FROM table1 BEGIN TRAN SELECT '第二个事务', @@TRANCOUNT --值为 2 DELETE table1 COMMIT TRAN SELECT '递交第二个事务', @@TRANCOUNT --值为 1ROLLBACK TRANSELECT '回滚第一个事务', @@TRANCOUNT --值为 0你的例子改为这样的话create procedure sp_1asbegin transactionSELECT '第一个过程', @@TRANCOUNTselect * from tablecommit transactionSELECT '递交第一个过程', @@TRANCOUNT --值为 0create procedure sp_2asbegin transactionSELECT '第二个过程', @@TRANCOUNTselect * from talbecommit transactionSELECT '递交第二个过程', @@TRANCOUNT --值为 0运行begin tran t1SELECT '测试嵌套开始', @@TRANCOUNTexec sp_1exec sp_2commit tran t1SELECT '测试嵌套结束', @@TRANCOUNT--结果测试嵌套开始 1第一个过程 2递交第一个过程 1 第二个过程 2递交第二个过程 1测试嵌套结束 0--sp1 与sp2 间没有事务嵌套,嵌套发生在t1与sp_1,t1与sp_2之间 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚过程离使用链接服务器要加上set xact_abort onSET ANSI_NULL_DFLT_ON on SET ANSI_WARNINGS on BTW :后来我想呀想,想呀想。。看着我深爱的女孩的照片,想呀想哈哈,你狂有精神动力么,because 偶没有女孩,所以就只能想到这里了,嘻嘻嘻 有连接服务器看来只能这样了,加set xact_abort on 吧 求教简洁SQL语句写法, 高手入.. 关于表结构设计的问题 关于一个SQL删除语句的写法 100分就2个问题,请高手赐教 一个古怪的查询排序问题 装SQL server2005 就中毒, 关于存储过程的问题 部份行重复,删除部分内容的设置 数据恢复问题,1500分奉送。请卖火柴的大哥帮帮忙。我已经哭了。 请问这样的问题能否用一条sql语句实现?详看内文 请问如何update一个表 如何建立这样的触发器??请高手赐教
COMMIT TRAN @@TRANCOUNT-1
ROLLBACK TRAN 使@@TRANCOUNT回归0
SAVE TRAN 不影响@@TRANCOUNT举例
SELECT '事务处理前', @@TRANCOUNT --值为 0
BEGIN TRAN
SELECT '第一个事务', @@TRANCOUNT --值为 1
SELECT * FROM table1
BEGIN TRAN
SELECT '第二个事务', @@TRANCOUNT --值为 2
DELETE table1
COMMIT TRAN
SELECT '递交第二个事务', @@TRANCOUNT --值为 1
ROLLBACK TRAN
SELECT '回滚第一个事务', @@TRANCOUNT --值为 0
你的例子改为这样的话
create procedure sp_1
as
begin transaction
SELECT '第一个过程', @@TRANCOUNT
select * from table
commit transaction
SELECT '递交第一个过程', @@TRANCOUNT --值为 0create procedure sp_2
as
begin transaction
SELECT '第二个过程', @@TRANCOUNT
select * from talbe
commit transaction
SELECT '递交第二个过程', @@TRANCOUNT --值为 0运行begin tran t1
SELECT '测试嵌套开始', @@TRANCOUNT
exec sp_1
exec sp_2
commit tran t1
SELECT '测试嵌套结束', @@TRANCOUNT--结果
测试嵌套开始 1
第一个过程 2
递交第一个过程 1
第二个过程 2
递交第二个过程 1
测试嵌套结束 0
--sp1 与sp2 间没有事务嵌套,嵌套发生在t1与sp_1,t1与sp_2之间
过程离使用链接服务器要加上set xact_abort onSET ANSI_NULL_DFLT_ON on SET ANSI_WARNINGS on BTW :后来我想呀想,想呀想。。看着我深爱的女孩的照片,想呀想
哈哈,你狂有精神动力么,
because 偶没有女孩,所以就只能想到这里了,嘻嘻嘻