插入多个表SQLITE

时间:2013-06-05 15:50:59

标签: sqlite

如何将一行插入一个表并将该行生成的id用于另一行,以便可以围绕整个事务进行事务处理? 我遇到的问题是存在大量的db延迟,因为我有100k记录,但我一次只能处理1-100。

INSERT INTO foo;
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT INTO foo;
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)
INSERT into bar(foo_id) VALUES (last_foo_id)

2 个答案:

答案 0 :(得分:1)

插入foo记录后,使用sqlite3_last_insert_rowid(或数据库包装器使用的任何内容)读取其ID,并在以下所有bar插入语句中使用该值:< / p>

db.execute("BEGIN TRANSACTION")
db.execute("INSERT INTO foo ...")
foo_id = db.last_insert_rowid
db.execute("INSERT INTO bar(foo_id) VALUES (?)", [foo_id])
...
db.execute("COMMIT TRANSACTION")

答案 1 :(得分:0)

使用last_insert_rowid()功能。