Sql server 2008 参考插入-存储过程-SQL Server 2008
我在.Net应用程序中工作。在我的aspx页面中,我有3个选项卡,即选项卡1、选项卡2、选项卡3。第一个选项卡包含一些文本框控件,第二个选项卡包含一些组合框控件,第三个选项卡包含一些控件。我想将所有这三个选项卡控件保存到SQL数据库中的三个不同表中。此操作只能使用一个存储过程。第一个表的主键应保存在第二个和第三个表中。比如,引用插入。这是我的书信Sql server 2008 参考插入-存储过程-SQL Server 2008,sql-server-2008,Sql Server 2008,我在.Net应用程序中工作。在我的aspx页面中,我有3个选项卡,即选项卡1、选项卡2、选项卡3。第一个选项卡包含一些文本框控件,第二个选项卡包含一些组合框控件,第三个选项卡包含一些控件。我想将所有这三个选项卡控件保存到SQL数据库中的三个不同表中。此操作只能使用一个存储过程。第一个表的主键应保存在第二个和第三个表中。比如,引用插入。这是我的书信 ALTER PROCEDURE [dbo].[Insert] (@Name NVARCHAR(50)) AS BEGIN SET N
ALTER PROCEDURE [dbo].[Insert]
(@Name NVARCHAR(50))
AS
BEGIN
SET NOCOUNT ON
DECLARE @TableOnePrimaryKey INT
BEGIN
INSERT INTO TABLEONE(Name)
VALUES (@Name)
SELECT @TableOnePrimaryKey=@@IDENTITY
SELECT CAST(@@IDENTITY AS INT)
INSERT INTO TABLETWO(TableTwoIDColumn)
VALUES (@TableOnePrimaryKey)
SELECT @TableOnePrimaryKey=@@IDENTITY
SELECT CAST(@@IDENTITY AS INT)
INSERT INTO TABLETHREE(TableThreeIDColumn)
VALUES (@TableOnePrimaryKey)
SELECT @TableOnePrimaryKey=@@IDENTITY
SELECT CAST(@@IDENTITY AS INT)
INSERT INTO TABLEFOUR(TableFourIDColumn)
VALUES (@TableOnePrimaryKey)
END
但是,表1主键没有保存在其他表中。如何解决这个问题。我将使用范围\标识而不是标识 从 避免与添加触发器相关的潜在问题 稍后,始终使用SCOPE_IDENTITY返回 最近在T SQL语句或存储过程中添加的行 尝试一下,看看它是否能解决您的问题 编辑:我想说的是,我认为您需要以不同的方式设置变量。尝试以下方法
SET @TableOnePrimaryKey = (SELECT SCOPE_IDENTITY())
SELECT CAST(@TableOnePrimaryKey AS INT)
etc etc使用代替。并且不应多次将该值赋给@TableOnePrimaryKey。如果在其他表中有标识列,则会丢失从第一次插入中获得的标识
ALTER PROCEDURE [dbo].[Insert]
(@Name NVARCHAR(50))
AS
BEGIN
SET NOCOUNT ON
DECLARE @TableOnePrimaryKey INT
INSERT INTO TABLEONE(Name)
VALUES (@Name)
SET @TableOnePrimaryKey=SCOPE_IDENTITY()
INSERT INTO TABLETWO(TableTwoIDColumn)
VALUES (@TableOnePrimaryKey)
INSERT INTO TABLETHREE(TableThreeIDColumn)
VALUES (@TableOnePrimaryKey)
INSERT INTO TABLEFOUR(TableFourIDColumn)
VALUES (@TableOnePrimaryKey)
END