我的问题很简单,但答案可能很棘手。
我在 PHP 中,我想手动管理我的对象的唯一 ID。棘手的是管理原子性。我不希望 2 个元素获得相同的 ID。
“元素”在“组”中分组。在每个组中,我希望元素 ID 从 1 开始,并为该组中的每个插入增量增长。
我的第一个解决方案是在“组”表中有一个“lastID”列:
CREATE TABLE groups ( id INT AUTO_INCREMENT, lastId INT )
CREATE TABLE elements ( myId INT, multiple values ...)
为了避免许多元素具有相同的 ID,我必须更新 lastId 并在原子 SQL 查询中选择它。
之后,检索到一个,我有一个无法再次选择的唯一 ID,我可以插入我的元素。
我的问题是如何解决粗体部分?我的数据库是带有 MyISAM 引擎的 MySQL,所以没有事务支持。
UPDATE groups
SET lastId = lastId + 1
WHERE id = 42
SELECT lastId
FROM groups
WHERE id = 42
有没有比这两个请求更原子的东西?
谢谢