Herman'ın çözümü benim için çalıştı, ancak ...
beni biraz karıştırdı. Cevabına göre hazırladığım demoyu ekliyorum. Cevabımdaki ek özellikler arasında yabancı anahtar desteği, otomatik artan anahtarlar ve last_insert_rowid()
bir işlemde otomatik olarak oluşturulan son anahtarı almak için işlevin kullanılması yer alıyor .
Bu bilgiye ihtiyacım üç yabancı anahtar gerektiren bir işleme bastığımda ortaya çıktı, ancak yalnızca sonuncusunu alabildim 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;