SQLite INSERT INTO使用SELECT和last_insert_rowid

时间:2018-01-17 15:25:22

标签: database sqlite

我正在开发一个基于SQLite的项目来保存标记的项目。 我创建了这些表:item,tag和item_tag,如下所示:

CREATE TABLE 'item'(id INTEGER AUTOINCREMENT primary key, ...);
CREATE TABLE 'tag'(name TEXT primary key); // <- actually, don't care about performance here
CREATE TABLE 'item_tag'(item_id..., tag_id..., PRIMARY KEY(item_id, tag_id));

&#39;标签&#39;表已预先填写,现在我不想创建批处理文件以插入大量项目。

我使用这个SQL查询:

INSERT INTO item VALUES(NULL, ...);
INSERT INTO item_tag SELECT last_insert_rowid() AS item_id, tag.name AS tag_id FROM tag WHERE tag.name IN('tag1','tag3');

来自第二个INSERT的SELECT查询可以单独使用。但是在INSERT内,除了第一个插入的item_taglast_insert_rowid指的是最后一个item_tag rowid,而不是item

如果是这种查询的有人照顾的行为,是否有不同的方式来做我想要的事情?

感谢您的帮助。

0 个答案:

没有答案