检索表的最新主键,用作不同表中的外键

时间:2012-02-09 10:29:58

标签: sql sqlite

我正在使用sqlite3并且想知道,如果有一种快速的方法来检索表A 中最后一个插入语句中创建的主键,那么我可以将它作为外键用于表B 中的不同插入语句。例如,首先在一个表中添加一个新的汽车品牌,然后在另一个表中添加一些品牌的型号。

TABLE car_brands (
brandID INTEGER PRIMARY KEY NOT NULL, 
name TEXT
)

TABLE car_models (
modelID INTEGER PRIMARY KEY NOT NULL,
brandID INTEGER REFERENCES brandID,
name TEXT
)

sqlite3_last_insert_rowid()是没有选项,因为我不知道在此操作期间是否有另一个线程正在更新数据库。

我是否必须使用单独的声明来检索它?

问候, 好奇心

1 个答案:

答案 0 :(得分:0)

根据在线帮助,sqlite3_last_insert_rowid()last_insert_rowid()(在SQL中使用)都是特定于连接的。

只要确保多个线程不共享相同的连接,就不会出现sqlite3_last_insert_rowid()的并发问题。

在您的SQL语句中,一个连接只能运行一个查询。如果在同一批次中同时具有INSERT和last_insert_rowid()调用,则不应该存在并发问题。