получить последний первичный ключ таблицы для использования в качестве внешнего ключа в другой таблице - PullRequest
1 голос
/ 09 февраля 2012

Я использую sqlite3 и хотел бы знать, есть ли быстрый способ получить первичный ключ , созданный во время последнего оператора вставки в таблицу A , чтобы я могиспользуйте его как внешний ключ для другого оператора вставки в таблица B .Например, сначала добавьте новую марку автомобиля в одну таблицу, а затем добавьте несколько моделей этой марки в другую таблицу.

TABLE car_brands (
brandID INTEGER PRIMARY KEY NOT NULL, 
name TEXT
)

TABLE car_models (
modelID INTEGER PRIMARY KEY NOT NULL,
brandID INTEGER REFERENCES brandID,
name TEXT
)

sqlite3_last_insert_rowid () не вариант, так как я делаюне знаю, обновляет ли другая база данных во время этой операции.

Придется ли мне извлекать ее, используя отдельный оператор?

Привет, любопытство

1 Ответ

0 голосов
/ 09 февраля 2012

Согласно интерактивной справке, sqlite3_last_insert_rowid() и last_insert_rowid() (для использования в SQL) зависят от соединения.

Пока вы гарантируете, что несколько потоков не используют одно и то же соединение, вы выиграли 'Проблемы с параллелизмом возникают при sqlite3_last_insert_rowid().

. И внутри ваших операторов SQL одно соединение может выполнять только один запрос.При условии, что в одном пакете есть и INSERT, и вызов last_insert_rowid(), это также не должно вызывать проблем с параллелизмом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...