SQLite: Insert into weak entity table (或者如何获取刚刚插入的定义实体的ID)

SQLite: Insert into weak entity table (or how to get the just-inserted defining entity's ID)

我正在努力将正确的键值插入弱实体以及插入定义强实体。

这两个实体:

CREATE TABLE 'key' (
'id' INTEGER NOT NULL  PRIMARY KEY AUTOINCREMENT,
...

CREATE TABLE 'key_data_rsa' (
'id_key' INTEGER NOT NULL  PRIMARY KEY REFERENCES 'key' ('id'),
...

我需要将关键元数据插入 table 'key' 并将相应的关键数据插入 table 'key_data_rsa',最好是在一个查询中。

据我了解,条目'key'必须在插入'key_data_rsa'条目之前插入,因为'key'的'id'必须先存在。

问题是,如果我分两步执行此操作,我会忘记 'key' 条目 - 'key' 唯一保证的唯一键是它的 'id' 并且尽快当它被插入时,我将无法再次 select 它以获得 'id'。

在这种情况下如何向弱实体插入数据以保持与强实体的正确连接?

请不要评论或质疑方案和用例,除非它们有严重错误。谢谢

-m.

函数last_insert_rowid() 应该有帮助。它returns最近一次成功插入table的rowid;在您的情况下,列 id 属于 INTEGER PRIMARY KEY 类型,因此被视为 rowid 的别名(参见 sqlite core functions

从弱实体引用刚刚插入的强实体应该按如下方式工作:

insert into key values (null, ...);
insert into key_data_rsa values (last_insert_rowid(), ...);