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

时间:2017-02-27 15:34:20

标签: android database sqlite android-sqlite fts3

我正在尝试将表格中的默认字段设置为当前时间。当我使用fts3虚拟表时,插入行不会将默认字段填充到它应该是什么。相反,它插入null。

如果我创建与普通表相同的表,则完全相同的查询将起作用并填充该字段。

以下是我正在使用的两种不同的表结构:

默认值有效的普通表

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表

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;
在第一个表上,我可以看到created_at字段已填充。在第二个表中,该字段为空。

我希望你能帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

documentation说:

  

如果作为CREATE VIRTUAL TABLE语句的一部分为FTS表显式提供了列名,则可以为每列选择性地指定数据类型名称。这是纯粹的语法糖,FTS或SQLite核心不会出于任何目的使用提供的类型名称。这同样适用于与FTS列名一起指定的任何约束 - 它们被解析但不被系统以任何方式使用或记录。

因此无法拥有默认值。

  

无法创建附加到FTS表的索引或触发器。

因此无法解决这个问题。