SQLite JSON1 扩展有一些非常简洁的功能。但是,我无法弄清楚如何更新或插入单个 JSON 属性值。
这是一个例子
CREATE TABLE keywords
(
id INTEGER PRIMARY KEY,
lang INTEGER NOT NULL,
kwd TEXT NOT NULL,
locs TEXT NOT NULL DEFAULT '{}'
);
CREATE INDEX kwd ON keywords(lang,kwd);
我正在使用此表来存储关键字搜索并记录在对象中发起搜索的位置locs
。此数据库表中的示例条目如下所示
id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2":1,"5":1}'
这里的位置对象属性是存储在别处的实际位置的索引。
现在想象以下场景
stackoverflow
从位置索引“2”开始搜索。在这种情况下,我只想增加该索引处的值,以便在操作后读取相应的行id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2": 2 ,"5":1}'
从以前未知的位置索引“7”开始搜索,
stackoverflow
在这种情况下,更新后的相应行必须读取id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2":1,"5":1, "7":1 }'
我不清楚这实际上是否可以做到。我尝试了一些类似的东西
UPDATE keywords json_set(locs,'$.2','2') WHERE kwd = 'stackoverflow';
这给出了错误消息error near json_set
。对于任何能够告诉我如何/是否应该/可以完成的人,我将非常感激。