Я пишу SQL миграцию для БД SQLite, и у меня есть связанные таблицы, поэтому мне нужно сначала вставить строку таблицы 'root', а затем вставить строки 'children', которые будут использовать ID для 'root ' строка.
Один из вариантов может заключаться в том, чтобы жестко закодировать первичный ключ строки 'root' и использовать его позже во всех зависимых строках, но я не люблю рисковать ошибками 'duplicate ID'.
Я знаю, что в SQLite есть 'last_insert_rowid', и я могу использовать временную таблицу, чтобы сохранить это значение для следующих вставок, но все же, возможно, мне не хватает более оптимального способа сделать это.
Например, я иметь таблицы:
- Plant (id)
- PlantDescription (id, language_id, plant_id, desctiption)
- PlantLink (id, language_id, plant_id, link)
и мне нужны следующие вставки:
INSERT INTO Plant VALUES (123);
INSERT INTO PlantDescription VALUES (1, 1, 123, 'some description');
INSERT INTO PlantLink VALUES (1, 1, 123, 'http://eng-link.com');
Здесь, чтобы вставить PlantDescription и PlantLink, мне нужно знать первичный идентификатор ранее вставленного Plant.
Я ищу за лучшую практику для достижения этого. Я занимаюсь разработкой Android приложения и использую Android Room, но, вероятно, вопрос более общий, и любое решение SQLite должно подойти.