使用Sqlite将具有自动生成的id的记录插入到异步环境中的多个相关表中?

时间:2018-04-08 09:09:29

标签: sql sqlite

我有两个彼此相关的表(简化示例):

people

id |  person
------------
1  | Peter
2  | Emma
3  | Sarah

parents

id_person | id_parent
---------------------
3         | 1
3         | 2

如您所见,SarahPeterEmma的女儿。

现在,如果Sarah's中的Joe自动递增并且查询是在异步环境中进行的,那么如何将ids兄弟people添加到两个表中?< / p>

我之所以提到“查询是在异步环境中进行”的原因是因为我担心会在多个步骤中执行顺序审批,例如:

  • 1) - 将Joe插入people
  • 2) - 从Joe's
  • 阅读id个新people
  • 3) - 将Joe's个新id插入parents
如果来自另一个线程/进程/协程的另一个查询在1)2)之间访问数据库,

可能会失败。

1 个答案:

答案 0 :(得分:1)

插入Joe后,使用last_insert_rowid()检索新的id

SELECT last_insert_rowid()

这是特定于连接的,因此只要其他线程或进程使用自己的连接,这将在许多事情一次发生的环境中正常工作。