Мне нужно выполнить массовую вставку множества записей со связанными записями (таблица has_many). Поэтому моя стратегия такова:
построить необработанный запрос SQL с указанием последовательных идентификаторов (первичный ключ), чтобы связанные записи могли быть построены с этими идентификаторами в качестве значений внешнего ключа. Но мне нужно предотвратить, чтобы другие параллельные соединения создавали новую запись с идентификатором в диапазоне, который мне нужно использовать для массового запроса. Как я могу зарезервировать диапазон идентификаторов для массовой вставки? Я пытался использовать alter table tablename auto_increment = x
, но не работает. Кроме того, я попытался создать поддельную запись с этим запросом:
LOCK TABLES tablename WRITE
# get last id (for example 100)
INSERT INTO tablename (SELECT 201 AS id, name FROM tablename WHERE id = 100)
UNLOCK TABLES
Но это не работает, потому что я получаю ошибку tablename was not locked with LOCK TABLES
.
Любая идея, чтобы решить эту проблему ?
Надеюсь, я объяснил себе: D