gpt4 book ai didi

sqlite - SQLite:编辑字段,全文已更新?

转载 作者:行者123 更新时间:2023-12-03 17:59:35 24 4
gpt4 key购买 nike

在SQLite 3中

如果我更新具有全文索引的字段,则全文索引会被更新,还是需要手动更新它?

最佳答案

取决于,例如。
如果您使用的是“外部内容FTS4表”,它将不会自动更新。

来自http://www.sqlite.org/fts3.html#section_6_2_2

CREATE TABLE t2(id INTEGER PRIMARY KEY, a, b, c, d);
CREATE VIRTUAL TABLE t3 USING fts4(content="t2", b, c);

INSERT INTO t2 VALUES(2, 'a b', 'c d', 'e f');
INSERT INTO t2 VALUES(3, 'g h', 'i j', 'k l');
INSERT INTO t3(docid, b, c) SELECT id, b, c FROM t2;
-- The following query returns a single row with two columns containing
-- the text values "i j" and "k l".
--
-- The query uses the full-text index to discover that the MATCH
-- term matches the row with docid=3. It then retrieves the values
-- of columns b and c from the row with rowid=3 in the content table
-- to return.
--
SELECT * FROM t3 WHERE t3 MATCH 'k';

-- Following the UPDATE, the query still returns a single row, this
-- time containing the text values "xxx" and "yyy". This is because the
-- full-text index still indicates that the row with docid=3 matches
-- the FTS4 query 'k', even though the documents stored in the content
-- table have been modified.
--
UPDATE t2 SET b = 'xxx', c = 'yyy' WHERE rowid = 3;
SELECT * FROM t3 WHERE t3 MATCH 'k';


但也可以通过触发器解决。


而不是分别写入全文索引和内容
表,一些用户可能希望使用数据库触发器来保持
关于存储的文档集的最新全文索引
在内容表中。例如,使用之前的表格
例子:

关于sqlite - SQLite:编辑字段,全文已更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com