我想让我的一个表中的字段/变量转移到另一个表。变量是当前用户的用户ID。这两个表之间存在关系。当用户注册帐户时,会为其创建UserId。然后,我希望用户能够存储关于他们自己的其他详细信息(存储在不同的表中)。这些项目应该链接到用户。如何让当前用户的UserId附加到他们提交给其他表的详细信息?这些是Visual Studio为我自己生成的SQL命令:
SelectCommand="SELECT [Bhousenum], [Bstreetname], [Bcity], [Bcounty], [Bcountry], [Dhousenum], [Dstreetname], [Dcity], [Dcounty], [Dcountry], [Dpostcode], [Bpostcode], [mobilenum], [credittype], [creditname], [creditnum], [securitycode], [creditexpiry], [dob], [UserId] FROM [Customers] WHERE ([UserId] = @UserId)"
DeleteCommand="DELETE FROM [Customers] WHERE [UserId] = @UserId"
InsertCommand="INSERT INTO [Customers] ([Bhousenum], [Bstreetname], [Bcity], [Bcounty], [Bcountry], [Dhousenum], [Dstreetname], [Dcity], [Dcounty], [Dcountry], [Dpostcode], [Bpostcode], [mobilenum], [credittype], [creditname], [creditnum], [securitycode], [creditexpiry], [dob], [UserId]) VALUES (@Bhousenum, @Bstreetname, @Bcity, @Bcounty, @Bcountry, @Dhousenum, @Dstreetname, @Dcity, @Dcounty, @Dcountry, @Dpostcode, @Bpostcode, @mobilenum, @credittype, @creditname, @creditnum, @securitycode, @creditexpiry, @dob, @UserId) WHERE [UserId] = @UserId"
UpdateCommand="UPDATE [Customers] SET [Bhousenum] = @Bhousenum, [Bstreetname] = @Bstreetname, [Bcity] = @Bcity, [Bcounty] = @Bcounty, [Bcountry] = @Bcountry, [Dhousenum] = @Dhousenum, [Dstreetname] = @Dstreetname, [Dcity] = @Dcity, [Dcounty] = @Dcounty, [Dcountry] = @Dcountry, [Dpostcode] = @Dpostcode, [Bpostcode] = @Bpostcode, [mobilenum] = @mobilenum, [credittype] = @credittype, [creditname] = @creditname, [creditnum] = @creditnum, [securitycode] = @securitycode, [creditexpiry] = @creditexpiry, [dob] = @dob WHERE [UserId] = @UserId">
答案 0 :(得分:1)
在设计关联表时使用外键约束,例如参见:
w3schools.com/sql/sql_foreignkey.asp
答案 1 :(得分:1)
我从问题中理解的是,如果是这种情况,您希望在创建用户时在您的其他查询中使用该ID,那么您必须在用户插入查询中使用以下输出参数
SELECT @NewUserID = SCOPE_IDENTITY() // this commands return newly added id
此行应在查询结尾处写入。
如果您在代码中使用sqldatasource
,如何实现此目的 <asp:SqlDataSource ...>
<InsertParameters>
........other parameters
<asp:Parameter Direction="Output" Name="NewUserID " Type="Int32" />
</InsertParameters> </asp:SqlDataSource>
如果您想使用存储过程,那么您可以将其写为
ALTE PROCEDURE dbo.Addusers(
.....other parameters
@NewProductID int OUTPUT
)
并将此ID添加到其他表中,您必须在这些表中创建外键。并使用此ID插入这些表
外键添加命令
user_id int FOREIGN KEY REFERENCES Userss(user_Id)
如果你需要任何进一步的信息,请告诉我
答案 2 :(得分:0)
在存储过程中使用“输出”参数。当您插入详细信息时,请将您的用户ID发送回前端,然后使用此ID进行其他交易。
例如:
create proc <procedure name>
(
@name varchar(max),
@OutUserID int output
)
as
begin
insert into <table name> values (<your values>)
set @OutUserID=scope_identity()
end
此SP将为您提供已插入的用户ID,但请记住“scope_identity”仅在insert语句之后有效且主键的自动增量必须打开。
您还可以使用多个输出参数。