Мой вопрос довольно прост, но ответ может быть сложным.
Я нахожусь на PHP, и я хочу вручную управлять уникальным идентификатором для своих объектов. Какова сложность управления атомарностью. Я не хочу, чтобы 2 элемента получили одинаковый идентификатор.
«Элементы» сгруппированы в «Группы». В каждой группе я хочу, чтобы идентификаторы элементов начинались с 1 и постепенно возрастали для каждой вставки в этой группе.
Моим первым решением является столбец «lastID» в таблице «Группы»:
CREATE TABLE groups ( id INT AUTO_INCREMENT, lastId INT ) CREATE TABLE elements ( myId INT, multiple values ...)
Чтобы избежать многих элементов с одинаковым ID, я должен обновить lastId и выбрать его в Atom SQL Query.
После этого, один из найденных, у меня есть уникальный идентификатор, который не может быть выбран снова, и я могу вставить свой элемент.
Мой вопрос – как решить смелую часть? Моя база данных – это MySQL с движком MyISAM, поэтому нет поддержки транзакций.
UPDATE groups SET lastId = lastId + 1 WHERE id = 42 SELECT lastId FROM groups WHERE id = 42
Есть ли что-то более атомное, чем эти 2 запроса?
благодаря