Скажем, у меня есть две таблицы, пользователи и группы, каждая из которых имеет автоинкрементный первичный ключ. Всякий раз, когда создается новый пользователь, я хотел бы создать группу вместе с этим пользователем (в то же время / той же транзакции). Однако пользователям необходимо знать, к какой группе они принадлежат, поэтому каждый пользователь хранит идентификатор_группы.
Для этого я создаю и вставляю группу в базу данных, выясняю, каким был первичный ключ этой группы, которую я только что вставил, и, наконец, вставляю пользователя с первичным ключом этой новой группы.
Обратите внимание, что мне нужно зафиксировать группу в базе данных (таким образом, чтобы она была вне любой транзакции с фиксацией пользователя), чтобы получить первичный ключ, который ей был назначен.
Хотя это будет работать в большинстве ситуаций, если есть какой-то сбой (сбой питания, сбой системы и т. Д.) Между тем, когда я вставляю группу и выясняю ее первичный ключ, и когда я вставляю пользователя, я буду в конечном итоге с несовместимой базой данных.
Есть ли способ сделать что-то вроде временного резервирования первичного ключа, чтобы в случае сбоя системы он не оказался в несовместимом состоянии?
В первую очередь меня интересуют базы данных MySQL, но если в стандартном SQL есть что-то, что позволит мне это сделать (и, следовательно, совместимо с другими бэкэндами баз данных), мне также интересно это знать.