MySQL id序列

时间:2010-03-08 10:13:42

标签: mysql unique sequence uniqueidentifier sequences

这是在MySQL中生成id的正确方法吗?

  

插入图片   (PictureId,First_pick,标题,描述,FILE_NAME,Is_Vertical)VALUES
  ((SELECT max(pictureid)+1 FROM Picture),0,?,?,?,?)

我的意思是,如果在许多线程运行此查询时,PictureId将是唯一的吗?

我无法修改表结构。我应该使用任何特定的锁,索引或事务隔离级别吗?

此致,Michal

3 个答案:

答案 0 :(得分:3)

您通常会使用AUTO_INCREMENT字段来处理这些事情:Manual

但问题还是很好,我想听听mySQL专家对此的深刻回答。以上述方式做到这一点有多可靠?

答案 1 :(得分:2)

除非你已经充分锁定了表 - 这可能会因为阻止其他线程访问它而导致问题 - 如果多个线程试图同时插入记录,你提出的方法将容易受到竞争条件的影响。

答案 2 :(得分:0)

如果你真的不能使用AUTO_INCREMENT那么你肯定应该锁定表格进行写作。