我创建了一个包含以下值的网络表单
单击提交按钮后,将调用存储过程savedata
。
字段name
,address
和contacts
已保存到表personal_details
中,而email
和password
存储在{{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?
感谢
这是我的第一个问题......对不起,如果我无法正确构建它......
答案 0 :(得分:3)
您应该在单个事务中执行以下一系列步骤,以确保此保存操作的原子性:
personal_details
表。login_details
表,其中user_id为上一步骤中获取的记录。此外,当这两个表中的记录之间存在一对一的对应关系时,跨两个表“垂直分区”用户的详细信息似乎不合适。您可以只有一个表,除非用户的属性为单个用户ID(即一对多关系)带有多个值。