使用 fts3 Sqlite table 时如何设置 'DEFAULT' 字段?

How to set a 'DEFAULT' field when using fts3 Sqlite table?

我正在尝试将 table 中的默认字段设置为当前时间。当我使用 fts3 虚拟 table 时,插入一行不会将默认字段填充到应有的位置。相反,它插入空值。

如果我创建与正常 table 相同的 table,则完全相同的查询有效并且字段被填充。

这是我使用的 2 种不同的 table 结构:

正常table 默认值有效

CREATE TABLE Emlak_test2 (_id INTEGER PRIMARY KEY,emlak_id TEXT,created_at TEXT DEFAULT (datetime('now', 'localtime')),emlak_sellorrent TEXT,emlak_cat TEXT,emlak_altcat TEXT,emlak_desc TEXT,emlak_living_rooms INTEGER,emlak_rooms INTEGER,emlak_sellprice INTEGER,emlak_temp TEXT,emlak_city TEXT,emlak_state TEXT,emlak_address TEXT,img_p1 TEXT,img_p2 TEXT,img_p3 TEXT,img_p4 TEXT,img_p5 TEXT,musteri_id TEXT);

FTS3 table默认值不起作用

CREATE VIRTUAL TABLE Emlak_test USING fts3 (_id INTEGER PRIMARY KEY,emlak_id TEXT,created_at TEXT DEFAULT (datetime('now', 'localtime')),emlak_sellorrent TEXT,emlak_cat TEXT,emlak_altcat TEXT,emlak_desc TEXT,emlak_living_rooms INTEGER,emlak_rooms INTEGER,emlak_sellprice INTEGER,emlak_temp TEXT,emlak_city TEXT,emlak_state TEXT,emlak_address TEXT,img_p1 TEXT,img_p2 TEXT,img_p3 TEXT,img_p4 TEXT,img_p5 TEXT,musteri_id TEXT);

现在,如果我使用这个查询;

insert into table_name default values;

在第一个 table 上,我可以看到 created_at 字段已填充。在第二个 table 上,字段为空。

我希望你能帮助我。

谢谢!

documentation 说:

If column names are explicitly provided for the FTS table as part of the CREATE VIRTUAL TABLE statement, then a datatype name may be optionally specified for each column. This is pure syntactic sugar, the supplied typenames are not used by FTS or the SQLite core for any purpose. The same applies to any constraints specified along with an FTS column name – they are parsed but not used or recorded by the system in any way.

所以不可能有默认值。

而且,

it is not possible to create indices or triggers attached to FTS tables.

因此无法解决此问题。