我的問題很簡單,但答案可能會非常棘手。增量計數器mysql
我在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
還有什麼東西比這兩個請求更原子嗎?
感謝
爲什麼你不能使用自動增量ID?這正是它旨在解決的問題。 – 2012-07-24 21:04:11
我需要有很多id序列,每個組 – 2012-07-24 21:30:49