在事务中使用提交是否足够?

问题描述

| 在ѭ1中足够使用
Commit
,否则我也应使用
rollback
tabel1
  name   nvarchar(10)
  family nvarchar(20)

table 2 
    name nvarchar(10)
    family nvarchar(20) not null

begin transaction
insert into table2 (name) values(\'john\')
insert into table1 (name,family) values(\'Joe\',\'Lando\')
commit transaction
如您所见,第一条语句有错误。我应该在某处使用回滚吗?     

解决方法

        如果使用SET XACT_ABORT ON(SQL Server 2000链接),则可以跳过ROLLBACK
SET XACT_ABORT ON
begin transaction
insert into table2 (name) values(\'john\')
insert into table1 (name,family) values(\'Joe\',\'Lando\')
commit transaction
从链接:   当SET XACT_ABORT为ON时,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。 现在,如果您不使用它,则需要回滚。或关闭您的连接。 SET XACT_ABORT ON的一个有用的副作用是,在客户端CommandTimeout事件之后,将释放锁,并回滚事务。否则,直到从SQL Server硬删除该连接后,该连接才会发生:由于池化,该连接可以保持打开状态。 您的圣经应该是Erland Sommarskog撰写的“ SQL 2000中的错误处理–背景”:请阅读。如此一来:我真的需要使用“ SET XACT_ABORT ON”吗?     ,        首先,我怀疑存储过程是否会真正编译,因为它会认识到table2没有“ family”字段。 其次,建议您采用某种形式的检查以确保自己的健全性,但是在任何情况下,SQL Server都会在发生错误时自动回滚。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...