插入多个表SQLITE

插入多个表SQLITE,sqlite,Sqlite,如何将一行插入到一个表中,并将从该行生成的id使用到另一行中,从而可以围绕整个事务进行事务处理? 我遇到的问题是有大量的数据库延迟,因为我有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) INSE

如何将一行插入到一个表中,并将从该行生成的id使用到另一行中,从而可以围绕整个事务进行事务处理? 我遇到的问题是有大量的数据库延迟,因为我有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)

使用
last\u insert\u rowid()
函数。

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

db.execute(“开始事务”)
db.execute(“插入到foo中…”)
foo\u id=db.last\u insert\u rowid
执行(“插入到条(foo_id)值(?),[foo_id])
...
db.execute(“提交事务”)

您要插入多少条
bar
记录?启动一个事务,插入到foo中,执行多条插入,然后提交。启动一个新的事务,执行另一个
foo
,然后执行
s、提交等…是的。已经这么做了。仍然瓶颈。我正在向bar中插入99%的内容。您的客户端SQLite库和/或语言是什么?是Perl、Python、SQLite C/API还是其他任何东西?在第二次插入到bar中时,我将从表bar而不是foo中获取ID。我如何将其包装到事务中?这实际上就是这个问题的目的。你将如何包装任何其他陈述。这个ID与事务有什么关系?我的全部问题是避免这种方法,因为它会花费大量的延迟。SQLite是一个嵌入式数据库库;向服务器发送多个命令无法节省时间。每个命令都在进程内同步执行。要优化执行时间,请在一个事务中放入更多命令。