2017-02-27 101 views
0

我想在我的表中設置一個默認字段到當前時間。當我使用fts3虛擬表時,插入一行不會將缺省字段填充到應該的位置。相反,它插入null。如何在使用fts3 Sqlite表時設置'DEFAULT'字段?

如果我創建與普通表相同的表,則完全相同的查詢將起作用,並且填充字段。

下面是我使用的是2層不同的表結構:

普通表默認值確實工作

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字段已填充。在第二張桌子上,該字段爲空。

我希望你能幫助我。

謝謝!

回答

0

documentation說:

如果明確規定了FTS表的列名作爲創建虛擬TABLE語句的一部分,那麼數據類型名稱可以任選地爲每列指定。這是純粹的語法糖,所提供的類型名稱不被FTS或SQLite內核用於任何目的。這同樣適用於任何與FTS列名稱一起指定的約束 - 它們被解析但未被系統以任何方式使用或記錄。

所以不可能有默認值。

而且,

,不可能用於創建指數或觸發連接到FTS表。

所以不可能解決這個問題。

+0

好的,謝謝。我在發佈這個問題後看到了這個文檔,但它很難理解。 –