SQL - 将数据插入父表和子表中,并将父表中的属性一起插入

时间:2017-08-28 18:20:18

标签: mysql sql database database-design

我已经制作了2个单独的表,即userlogin和userprofile,其中包含以下列。

userlogin:
    id
    uname
    pass

userprofile:
    user_id(Foreign key)
    name
    gender
    aboutme

由于我将在注册时获取一些userprofile数据,我想知道将userpdin表中新生成的id提供给userprofile表的最佳方法是什么。

我想过将两个插入查询一个接一个地插入,但是如果多个用户同时注册并且一个用户登录与另一个用户配置文件一起保存会怎么样。

我是否应该保存使用用户名密钥输入的个人资料?

2 个答案:

答案 0 :(得分:0)

如果您担心“同时”注册,可以使用mysql事务。

start transaction;然后commit;

实施例: http://www.mysqltutorial.org/mysql-transaction.aspx

对于使用外键进行插入,请参阅此问题:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key

答案 1 :(得分:0)

使用交易很好,但这里可能还有另一件事要指出。

如果idAUTO_INCREMENT,那么

  1. INSERT INTO userlogin (uname, pass) VALUES (..., ...) - 未指定id
  2. 获取LAST_INSERT_ID() - 这会为您提供值,并且它特定于您的连接。没有其他联系可以潜入并抓住你的身份。
  3. 使用该值执行INSERT INTO userprofile (user_id, ...) VALUES ($id, ...)
  4. 有没有理由不合并这两张桌子? 1:1的关系很少有用。正如所讨论的那样here