Sql server 将值插入SQL Server数据库

Sql server 将值插入SQL Server数据库,sql-server,database,Sql Server,Database,我创建了一个具有以下值的web表单 名字 姓 地址行1 地址行2 城市 陈述 联系人1 联系人2 电子邮件id 密码 确认密码 单击提交按钮后,将调用存储过程savedata 姓名、地址和联系人字段保存在表个人详细信息中,而电子邮件和密码存储在登录详细信息中 表personal\u details有列user\u id int identity(1,1)pk。 在login\u detail表中定义了相同的user\u id int identity(1,1)fk 现在,是否有可能2个用户1

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

  • 名字
  • 地址行1
  • 地址行2
  • 城市
  • 陈述
  • 联系人1
  • 联系人2
  • 电子邮件id
  • 密码
  • 确认密码
单击提交按钮后,将调用存储过程
savedata

姓名
地址
联系人
字段保存在表
个人详细信息
中,而
电子邮件
密码
存储在
登录详细信息

personal\u details
有列
user\u id int identity(1,1)pk

login\u detail
表中定义了相同的
user\u id int identity(1,1)fk

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

正在分别将id生成为1和2

但对于登录详细信息,用户2数据首先被推送,然后是用户1…生成ID 1和2。。。哪些是错的

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

谢谢


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

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

  • 开始交易
  • 将记录插入
    personal\u details
  • 获取与添加的新记录对应的用户id
  • login\u details
    表中插入记录,用户id与上一步中获得的id相同
  • 提交事务

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

    我对web开发非常陌生。。你能告诉我什么时候该打破这张桌子吗…还有这些多对一对一的关系。。。我只使用了存储过程…事务是否有任何不同。。。谢天谢地,只有当存在多值属性(如一个用户有多个地址,其中用户信息存储在一个表中,每个地址作为单独的记录存储在另一个表中)时,您才会“破坏”记录,地址记录中的外键引用用户id。Reg事务,这些BEGIN和COMMIT语句是可以在存储过程中使用的SQL语句。您可能想通过DB事务教程来更好地了解这一点。