【问题标题】:TSQL: Insert/Update with multiple tables/scope_identity()TSQL:插入/更新多个表/scope_identity()
【发布时间】:2015-11-22 04:24:21
【问题描述】:

我的前端有两个选项卡,用于收集地址和用户的信息。目前,我的存储过程在最终提交按钮上被调用。我的地址表有一个 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 列中,但我不知道如何实现。

【问题讨论】:

    标签: sql tsql stored-procedures


    【解决方案1】:

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

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

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

         SET    @Id = SCOPE_IDENTITY();
         Return @Id
    

    【讨论】:

      猜你喜欢
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多