1

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

这两个实体:

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'),
...

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

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

问题是,如果我分两步执行此操作,我会丢失“密钥”条目 - 唯一保证的“密钥”唯一密钥是它的“id”,一旦插入,我将无法再次选择它以获得“id”。

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

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

-米。

4

1 回答 1

1

功能last_insert_rowid()应该有所帮助。它将最近一次成功插入的rowid返回到带有rowid的表中;在您的情况下, columnid是类型INTEGER PRIMARY KEY,因此被视为 rowid 的别名(参见sqlite core functions

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

insert into key values (null, ...);
insert into key_data_rsa values (last_insert_rowid(), ...);
于 2016-12-11T22:42:57.800 回答