Sqlite 如何访问SQL脚本中最后插入的行ID?

Sqlite 如何访问SQL脚本中最后插入的行ID?,sqlite,relational,Sqlite,Relational,我使用的是SQLite,我有一个属性表和一个子属性表。每个子特性都使用fkPropertyId列指向其父特性。现在,要创建初始数据库,我有一个如下脚本: INSERT INTO property VALUES(1,.....); INSERT INTO property VALUES(2,.....); INSERT INTO property VALUES(3,.....); INSERT INTO subproperty VALUES(1,.....,3); INSERT INT

我使用的是SQLite,我有一个属性表和一个子属性表。每个子特性都使用fkPropertyId列指向其父特性。现在,要创建初始数据库,我有一个如下脚本:

INSERT INTO property VALUES(1,.....);
INSERT INTO property VALUES(2,.....);
INSERT INTO property VALUES(3,.....);
   INSERT INTO subproperty VALUES(1,.....,3);
   INSERT INTO subproperty VALUES(2,.....,3);
   INSERT INTO subproperty VALUES(3,.....,3);
INSERT INTO property VALUES(4,.....);
现在,我想去掉硬编码的rowId,它应该是这样的:

INSERT INTO property VALUES(NULL,.....);
INSERT INTO property VALUES(NULL,.....);
INSERT INTO property VALUES(NULL,.....);
   INSERT INTO subproperty VALUES(NULL,.....,X);
   INSERT INTO subproperty VALUES(NULL,.....,X);
   INSERT INTO subproperty VALUES(NULL,.....,X);
INSERT INTO property VALUES(NULL,.....);
其中x指属性表中最后插入的行ID。现在,那是

(SELECT MAX(rowId) FROM property)
有没有更好(技术上更准确)的方法来编写此脚本?

使用以下函数:

SELECT last_insert_rowid();

我提出的解决方案使用了Ben S的
last\u insert\u rowid
函数:

INSERT INTO property VALUES(NULL,.....);
INSERT INTO property VALUES(NULL,.....);

   INSERT INTO subproperty VALUES(1,.....,-1);
   INSERT INTO subproperty VALUES(2,.....,-1);
   INSERT INTO subproperty VALUES(3,.....,-1);
INSERT INTO property VALUES(NULL,.....);
UPDATE subproperty SET fkPropertyId = (SELECT last_insert_rowid()) WHERE fkPropertyId=-1;

INSERT INTO property VALUES(NULL,.....);

不确定这是否是最好的方法,但它对我有效,并且它不使用任何额外的表来临时存储数据。

如何在连续三次插入时保持该值?只需先插入属性行,然后插入子属性。如果需要记住多个插入的属性ID,请在执行子属性插入之前将其分配给变量。我的问题是,这是一个sqlite脚本,据我所知,sqlite不支持脚本中的用户变量