Solusi Herman berhasil untuk saya, tetapi ...
saya sedikit bingung. Saya termasuk demo yang saya kerjakan berdasarkan jawabannya. Fitur tambahan dalam jawaban saya termasuk dukungan kunci asing, kunci kenaikan otomatis, dan penggunaan last_insert_rowid()
fungsi untuk mendapatkan kunci yang dibuat otomatis terakhir dalam sebuah transaksi.
Kebutuhan saya akan informasi ini muncul ketika saya mencapai transaksi yang membutuhkan tiga kunci asing tetapi saya hanya bisa mendapatkan yang terakhir dengan 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;