我正在努力为弱实体插入正确的键值以及插入定义的强实体。
这两个实体:
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'必须首先存在。
问题在于,如果我分两步执行此操作,我就会忘记'key'条目 - 'key'唯一保证的唯一键是'id',一旦插入,我就不会能够再次选择它以获得'id'。
如何在此方案中向弱实体插入数据以保持与强实体的正确连接?
请不要评论或质疑该计划和用例,除非有严重错误。感谢。
-m
答案 0 :(得分:1)
函数last_insert_rowid()
应该有所帮助。它将最近成功插入的rowid返回到带有rowid的表中;在您的情况下,列id
的类型为INTEGER PRIMARY KEY
,因此被视为rowid的别名(cf. sqlite core functions)
引用一个刚刚插入的强实体,来自弱实体应该如下工作:
insert into key values (null, ...);
insert into key_data_rsa values (last_insert_rowid(), ...);