将值插入SQL Server数据库

时间:2012-09-16 12:00:28

标签: sql-server database

我创建了一个包含以下值的网络表单

  • 名字
  • 姓氏
  • 地址第1行
  • 地址第2行
  • 城市
  • 状态
  • contact1
  • contact2
  • 电子邮件ID
  • 密码
  • 确认密码......

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

字段nameaddresscontacts已保存到表personal_details中,而emailpassword存储在{{1}中}}

表格login_detail包含personal_details列... ... user_id int identity(1,1) pk表格中定义了相同的user_id int identity(1,1) fk

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

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

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

是否有其他方法可以为这两个表获取相同的ID?

感谢

这是我的第一个问题......对不起,如果我无法正确构建它......

1 个答案:

答案 0 :(得分:3)

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

  1. BEGIN TRANSACTION
  2. 将记录插入personal_details表。
  3. 获取与此新记录对应的user_id。
  4. 将记录插入login_details表,其中user_id为上一步骤中获取的记录。
  5. COMMIT TRANSACTION。
  6. 此外,当这两个表中的记录之间存在一对一的对应关系时,跨两个表“垂直分区”用户的详细信息似乎不合适。您可以只有一个表,除非用户的属性为单个用户ID(即一对多关系)带有多个值。