-1

我想让我的一个表中的字段/变量转移到另一个表。变量是当前用户的用户 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">
4

3 回答 3

1

在设计关联表时使用外键约束,例如:

w3schools.com/sql/sql_foreignkey.asp

于 2013-05-01T10:37:19.537 回答
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) 

如果您需要任何关于此的更多信息,请告诉我

于 2013-05-01T10:49:35.457 回答
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”仅在插入语句后有效,并且您的主键自动增量必须打开。

您也可以使用多个输出参数。

于 2013-05-01T11:05:15.380 回答