2017-08-28 56 views
-1

我已经制作了2个单独的表,即userlogin和userprofile以及以下列。SQL - 将数据插入父表和父表中的数据一起使用来自父表的属性

userlogin: 
    id 
    uname 
    pass 

userprofile: 
    user_id(Foreign key) 
    name 
    gender 
    aboutme 

因为我会采取一些在注册我想知道什么是给从用户登陆表新生成的ID在USERPROFILE表的最佳途径USERPROFILE数据。

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

我应该改为保存配置文件外键用用户名?

+0

可能的重复:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key – kenfire

+0

不可能是重复的 - last_insert_id(),而不是FK,似乎是真正的问题。 –

+0

@kenfire我读了它,但我想last_insert_id似乎更好地回答它。谢谢反正。 – reevkandari

回答

0

使用事务是好的,但有可能是另一件事在这里指出。

如果idAUTO_INCREMENT,然后

  1. INSERT INTO userlogin (uname, pass) VALUES (..., ...) - 没有指定id
  2. 获取LAST_INSERT_ID() - 这给你的价值,它是特定于你的连接。这是没有其他连接可以潜入并获得你的ID。
  3. 用做INSERT INTO userprofile (user_id, ...) VALUES ($id, ...)

该值是有一些理由不合并两个表? 1:1关系很少有用。如讨论here

+0

太棒了.. last_insert_id()就是我正在寻找的东西。我试图保持一些原子的东西,userlogin表会有很多安全的东西,如最后生成的otp,acount状态等。 而配置文件部分将有超过10个字段左右..所以我决定也许最好保持结构清洁。 尽管感谢您的建议。 last_insert_id很棒,将在我的PDO上使用它作为'$ last_id = $ conn-> lastInsertId(); ' – reevkandari

+0

好。每个API都有自己的重要功能拼写。 –

相关问题