[英]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.