22,181
社区成员




SET XACT_ABORT ON;--添加这条
BEGIN TRANSACTION
A.当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。
B.当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。
如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。
CREATE TABLE [dbo].[NsCostRec](
[FStockID] [int] NOT NULL,
[FItemID] [int] NOT NULL,
[FDate] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[FAmount] [decimal](18, 6) NOT NULL,
[FAmount1] [decimal](18, 6) NOT NULL,
[FPreAmount] [decimal](18, 6) NOT NULL,
CONSTRAINT [PK_NsCostRec] PRIMARY KEY CLUSTERED
(
[FStockID] ASC,
[FItemID] ASC,
[FDate] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
--
FStockID,FItemID,FDate为主键
--执行下面一个事务
begin tran
update AXiStockInto set FTheFirstTimeID=2,FTheFirstTimeDate='2009-04-10',FTheFirstTimeTime='08:57:22' where finterid=93
if @@Error=0
begin
end
else
begin
rollback tran
end
insert into NsCostRec(FStockID, FItemID, FDate, FAmount, FAmount1, FPreAmount) values(1773, 1815, '2009-04-09', 1200.000015, 1200.000000, 0.000000)
if @@Error=0
begin
end
else
begin
rollback tran
end
insert into NsCostRec(FStockID, FItemID, FDate, FAmount, FAmount1, FPreAmount) values(1773, 1815, '2009-04-09', 1200.000015, 1200.000000, 0.000000)
if @@Error=0
begin
end
else
begin
rollback tran
end
commit tran
CREATE TABLE [dbo].[NsCostRec](
[FStockID] [int] NOT NULL,
[FItemID] [int] NOT NULL,
[FDate] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[FAmount] [decimal](18, 6) NOT NULL,
[FAmount1] [decimal](18, 6) NOT NULL,
[FPreAmount] [decimal](18, 6) NOT NULL,
CONSTRAINT [PK_NsCostRec] PRIMARY KEY CLUSTERED
(
[FStockID] ASC,
[FItemID] ASC,
[FDate] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
--
FStockID,FItemID,FDate为主键
--执行下面一个事务
begin tran
update AXiStockInto set FTheFirstTimeID=2,FTheFirstTimeDate='2009-04-10',FTheFirstTimeTime='08:57:22' where finterid=93
if @@Error=0
begin
commit tran
end
else
begin
rollback tran
end
insert into NsCostRec(FStockID, FItemID, FDate, FAmount, FAmount1, FPreAmount) values(1773, 1815, '2009-04-09', 1200.000015, 1200.000000, 0.000000)
if @@Error=0
begin
commit tran
end
else
begin
rollback tran
end
insert into NsCostRec(FStockID, FItemID, FDate, FAmount, FAmount1, FPreAmount) values(1773, 1815, '2009-04-09', 1200.000015, 1200.000000, 0.000000)
if @@Error=0
begin
commit tran
end
else
begin
rollback tran
end