我正在使用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()是没有选项,因为我不知道在此操作期间是否有另一个线程正在更新数据库。
我是否必须使用单独的声明来检索它?
问候, 好奇心
答案 0 :(得分:0)
根据在线帮助,sqlite3_last_insert_rowid()
和last_insert_rowid()
(在SQL中使用)都是特定于连接的。
只要确保多个线程不共享相同的连接,就不会出现sqlite3_last_insert_rowid()
的并发问题。
在您的SQL语句中,一个连接只能运行一个查询。如果在同一批次中同时具有INSERT和last_insert_rowid()
调用,则不应该存在并发问题。