sqlserver 事务
在存储过程中使用事务的时候也遇到些概念性的错误和操作性的错误,特记录下来。提到事务,一般都知道其是一个单个的工作单元,也就是用户定义的一个操作序列,要么都成功,要么都失败。
事务有一个 隐藏的 XACT_ABORT 设置开关,一般在启用事务(transaction)的时候,其默认值为off
XACT_ABORT 官方给的解释是 “指定当 Transact-SQL 语句出现运行时错误时,SQL Server 是否自动回滚当前事务”
其中
当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。
当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。 如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。 OFF 是默认设置。
第一种:
我在使用事务的时候,犯得第一个错误时,错误理解使用到呢系统给的函数@@error
例如:
create table student
{
id int PRIMARY KEY IDENTITY(1,1),
name varchar(10),
age int
}
create PROCEDURE pro_student_test
as
begin tran
insert into student(name,age) values('中国人民a',null);