1

我创建了一个具有以下值的 Web 表单

  • 地址第一行
  • 地址线 2
  • 城市
  • 状态
  • 联系人1
  • 联系人2
  • 电子邮件ID
  • 密码
  • 确认密码...

savedata单击提交按钮后,将调用存储过程。

字段name,addresscontacts保存到表中personal_details,而emailpassword存储到login_detail.

该表personal_details有列user_id int identity(1,1) pk...在表中定义
相同...user_id int identity(1,1) fklogin_detail

现在,是否有可能 2 个用户 1 和 2 同时提交表单,并且 user1 的个人详细信息被推送到表中,然后 user2 的个人详细信息被推送。

分别生成 id 为 1 和 2...

但是对于登录详细信息,首先推送 user2 数据,然后推送 user1...生成 ids 1 和 2...这是错误的...。

有没有其他方法可以为两个表获取相同的 id?

谢谢

这是我的第一个问题……抱歉,如果我无法正确地构图……

4

1 回答 1

3

您应该在单个事务中执行以下步骤序列,以确保此保存操作的原子性:

  1. 开始交易
  2. 将记录插入personal_details表中。
  3. 获取这条新增记录对应的user_id。
  4. 将记录插入到login_details表中,user_id 与上一步中获得的相同。
  5. 提交交易。

此外,当这两个表中的记录之间存在一一对应关系时,将用户的详细信息“垂直分区”到两个表中似乎并不合适。您可以只拥有一个表,除非用户的属性为单个用户 ID 携带多个值,即一对多关系。

于 2012-09-16T12:13:11.793 回答