在用户表中,我要添加新行,这些行需要每个都包含一个引用,该引用是另一个“访问键”表中唯一行的ID。
这些用户行中的某些行可以从许多线程中同时添加。我知道这些操作将导致数据库阻塞,因此并非真正同时发生。所以也许这不是一个问题?
因此,我有一个php脚本来创建新的用户行,并且我的访问键表中填充了许多行。如何在“访问键”表中生成对唯一行ID的引用,又如何知道它是唯一的?
最佳答案
您可以从正在执行插入操作的任何线程按顺序执行此操作:
1)向用户表添加行
2)检索此新行的ID
3)使用#2中检索到的ID插入访问密钥表
4)转到1),直到完成
MySQL可以安全地返回它在每个连接的插入查询中创建的最后一个ID-由某个其他线程完成的插入不会覆盖另一个线程的“最后插入ID”-每个连接保留的最后一个插入ID。
使用这种结构,您可以在插入时拥有任意数量的线程,并且它们都不会踩到彼此的脚趾,因为它们都获得了自己独特的“ last id”。