我试图在一个SQL Server存储过程中实现两个插入语句。我做了类似的事情,但第二个插入语句不起作用。有任何想法吗?感谢。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertWrite]
@Die nvarchar(8),
@TSO int,
@TSOStatus nvarchar(50);
as
BEGIN
SET NOCOUNT OFF;
INSERT INTO Table1 (TSO, TSOStatus)
VALUES (@TSO, @TSOStatus)
if @@rowcount > 0
BEGIN
INSERT INTO Table2 (TSO, Die)
VALUES (@TSO, @Die);
COMMIT
END
ELSE
ROLLBACK
END
答案 0 :(得分:1)
您不需要额外的commit
和rollback
,因为我没有看到您开始交易的任何地方。不确定你正在尝试什么,但下面的代码工作得很好
CREATE PROCEDURE [dbo].[InsertWrite]
@Die varchar(8),
@TSO varchar(10),
@TSOStatus varchar(50)
as
BEGIN
SET NOCOUNT OFF;
INSERT INTO Tab1 (TSO, TSOStatus) Values (@TSO,@TSOStatus);
if @@rowcount > 0
INSERT INTO Tab2 (TSO,Die) Values (@TSO, @Die);
END
答案 1 :(得分:0)
你可以大大简化这个:
create procedure dbo.InsertWrite
@Die nvarchar(8) ,
@TSO int ,
@TSOStatus nvarchar(50)
as
set nocount on
begin transaction
begin try
insert Table1 ( TSO , TSOStatus ) values ( @TSO , @TSOStatus )
insert Table2 ( TSO , Die ) values ( @TSO , @Die )
commit transaction
end try
begin catch
rollback transaction
throw
end catch
return 0
go