(1) set ANSI_NULLS ON --见图1 set QUOTED_IDENTIFIER ON go ALTER proc [dbo].[procname] as begin begin transaction DECLARE @myerror INT delete from tbname SET @myerror=@myerror+@@ERROR SET @myerror=@myerror+@@ERROR begin rollback transaction end else beg
SET XACT_ABORT on BEGIN TRAN INSERT INTO [PDA_Action] VALUES ('採购入库1') INSERT INTO [PDA_Action] VALUES ('採购入库2') SELECT 1/0 /* 除数为0错误 */ INSERT INTO [PDA_Action] VALUES ('採购入库3') INSERT INTO [PDA_Action] VALUES ('採购入库4') COMMIT TRAN 对于有select
锁的作用范围通常在事务中,事务是建立在并发模式下. 从SQL Server 2005开始,加入了一种新的并发模式-----乐观并发.不管使用哪种并发模式,如果多个会话同时修改相同的数据,都会产生资源争用,然后引发一系列的问题. 1.存在的读现象:包括脏读.不可重复读和幻读. 2.丢失更新:一个会话的修改效果被另外一个会话意外覆盖 3.过量的锁定:过量的锁定会导致阻塞,导致资源压力和终端用户的响应延时 4.死锁:最少两个会话互相阻塞对方,引发死锁.SQL Server 尽可能自动侦测并干预死锁,最