La solución de Herman funcionó para mí, pero ...
me confundió un poco. Incluyo la demostración que preparé según su respuesta. Las características adicionales en mi respuesta incluyen soporte de clave externa, claves de incremento automático y el uso de la last_insert_rowid()
función para obtener la última clave generada automáticamente en una transacción.
Mi necesidad de esta información surgió cuando llegué a una transacción que requería tres claves externas pero solo pude obtener la última con 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;