繁体   English   中英

TSQL:使用多个表/ scope_identity()进行插入/更新

[英]TSQL: Insert/Update with multiple tables/scope_identity()

我的前端有两个标签,用于收集“地址”和“用户”的信息。 目前,我的存储过程在最终提交按钮上被调用。 我的地址表具有一个ID(主键),Line1和Line2列。 我的用户表具有一个ID(主键)FirstName,LastName和AddressID列(应映射到地址表中的ID列)。 我的地址插入过程如下所示:

ALTER PROC [dbo].[Addresses_Insert]
@Line1 nvarchar(50),
@Line2 nvarchar (50), = null
@ID = INT output
As
BEGIN
INSERT INTO [dbo].[Addresses]
           (                  
                [Line1],
                [Line2]
            )
     VALUES
           (@Line1, @Line2)

    SET    @Id = SCOPE_IDENTITY()


END

我的用户更新如下所示:

ALTER PROC [dbo].[Users_Update]
     @Id int
    ,@FirstName nvarchar(50) = null
    ,@LastName nvarchar(50) = null
    ,@AddressId INT = null

AS
BEGIN
UPDATE dbo.Users

SET
     [FirstName] = @FirstName
    ,[LastName] = @LastName
    ,[AddressId] = @AddressId --not sure about this

WHERE Id = @Id

我需要从地址存储过程中获取scope_identity()到我的Users表的AddressID列中,但是我不确定如何使它起作用。

在代码中添加参数时,将@Id参数设置为输出参数,并在执行过程后检查参数值:

      SqlParameter x = new SqlParameter();
      x.Direction = System.Data.ParameterDirection.Output;

或者您可以像这样从@Id参数返回值:

     SET    @Id = SCOPE_IDENTITY();
     Return @Id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM