2017-02-27 9 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フィールドに値が設定されていることがわかります。 2番目の表で、フィールドは空です。

私はあなたにこれを手伝っていただければ幸いです。

ありがとうございました!

答えて

0

documentationは言う:

列名を明示的にCREATE VIRTUAL TABLE文の一部としてFTSテーブルのために提供されている場合は、データ型名は、必要に応じて、各列に指定することができます。これは純粋な構文的な砂糖です。提供されたtypenameは、FTSまたはSQLiteコアでは使用されません。 FTS列名とともに指定された制約にも同じことが適用されます。これらは解析されますが、システムによって使用されたり記録されたりすることはありません。

したがって、デフォルト値を使用することはできません。

そして、

FTSテーブルに取り付けたインデックスまたはトリガを作成することはできません。

したがって、これを回避することはできません。

+0

ありがとうございます。私は質問を投稿した後、この文書を見ましたが、理解するのはちょっと難しかったです。 –

関連する問題