我想创建一个版本控制系统,并且对版本号为 1 的新条目的查询如下所示:
ID 和修订号组合起来就是主键。
insert into contentfile (id, name, revision, active)
values ((select max(id) +1 from contentfile), 'name', 1, 1)
这是否足够原子化,或者子查询生成的 id 是否可能同时被该查询的另一个调用选择?
提前致谢。
最佳答案
不要尝试重新发明已经存在的东西。通过向 id
字段添加自动增量选项来修改表,然后插入记录,如下所示:
INSERT INTO contentfile(name, revision, active) VALUES('name', 1, 1);
该 id 将由 MySQL 服务器自动递增。所有 id 值都是唯一的。
关于Mysql 原子 id 增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949763/