这是在MySQL中生成id的正确方法吗?
插入图片 (PictureId,First_pick,标题,描述,FILE_NAME,Is_Vertical)VALUES
((SELECT max(pictureid)+1 FROM Picture),0,?,?,?,?)
我的意思是,如果在许多线程运行此查询时,PictureId将是唯一的吗?
我无法修改表结构。我应该使用任何特定的锁,索引或事务隔离级别吗?
此致,Michal
答案 0 :(得分:3)
您通常会使用AUTO_INCREMENT
字段来处理这些事情:Manual
但问题还是很好,我想听听mySQL专家对此的深刻回答。以上述方式做到这一点有多可靠?
答案 1 :(得分:2)
除非你已经充分锁定了表 - 这可能会因为阻止其他线程访问它而导致问题 - 如果多个线程试图同时插入记录,你提出的方法将容易受到竞争条件的影响。
答案 2 :(得分:0)
如果你真的不能使用AUTO_INCREMENT那么你肯定应该锁定表格进行写作。