2012-07-05 59 views

回答

1

這取決於,例如。 如果您使用的是「外部內容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'; 

,但它可以通過觸發器解決了。

而是單獨寫全文索引和內容 表,一些用戶可能希望使用數據庫觸發器相對於保持 全文索引最新的存儲 文檔集合在內容表中。例如,使用前面的表格 示例: