我有3个表 - TB1,TB2和r_tb1_tb2(innoDB)
TB1保留用户的详细信息(将被插入)
- id(主要,唯一)
- 姓名
TB2保存用户可以采取的课程的详细信息(静态表)
- id(主要,唯一)
- 课程名称
r_tb1_tb2保持2个表之间的关系
- rID
- user_id(来自表1)
- course_id(参考表2)
当我在TB1中插入新行时,我得到最后一行插入的id。 并使用它在r_tb1_tb2
中插入另一行我可以预见,如果在tb1中同时插入插件,可能会导致错误输入。
有人可以指出这种同步更新的最佳做法。
提前致谢。
答案 0 :(得分:3)
生成的ID在服务器上维护 每个连接基础 。这意味着返回的值 给定客户端的函数是生成的第一个AUTO_INCREMENT值 对于影响AUTO_INCREMENT列 的最新语句 客户端 即可。此值不受其他客户端的影响,即使它们也是如此 生成自己的AUTO_INCREMENT值。此行为可确保 每个客户端都可以检索自己的ID而无需担心 其他客户的活动,无需锁或 交易。
(强调他们的)
因此,如果两个不同的用户在您的网站上采取行动导致记录被插入T1,那么这些用户的last_insert_id
将是不同的,因为他们使用两个不同的连接(上面的conext中的客户端)
答案 1 :(得分:1)