Рішення Германа спрацювало для мене, але ...
мене трохи змішало. Я включаю демо, яке я розробив на основі його відповіді. Додаткові функції моєї відповіді включають підтримку зовнішнього ключа, автоматичне збільшення клавіш та використання last_insert_rowid()
функції для отримання останнього автоматично згенерованого ключа в транзакції.
Моя потреба в цій інформації з’явилася, коли я здійснив транзакцію, яка вимагала трьох зовнішніх ключів, але я міг отримати лише останній last_insert_rowid()
.
PRAGMA foreign_keys = ON;
PRAGMA temp_store = 2;
CREATE TABLE Foo(
Thing1 INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
);
CREATE TABLE Bar(
Thing2 INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
FOREIGN KEY(Thing2) REFERENCES Foo(Thing1)
);
BEGIN TRANSACTION;
CREATE TEMP TABLE _Variables(Key TEXT, Value INTEGER);
INSERT INTO Foo(Thing1)
VALUES(2);
INSERT INTO _Variables(Key, Value)
VALUES('FooThing', last_insert_rowid());
INSERT INTO Bar(Thing2)
VALUES((SELECT Value FROM _Variables WHERE Key = 'FooThing'));
DROP TABLE _Variables;
END TRANSACTION;