2017-02-27 1 views
0

J'essaie de définir un champ par défaut dans ma table à l'heure actuelle. Lorsque j'utilise une table virtuelle fts3, insérer une ligne ne remplit pas le champ par défaut à ce qu'il devrait être. Au lieu de cela, il insère null.Comment définir un champ 'DEFAULT' lors de l'utilisation de la table fts3 Sqlite?

Si je crée la même table que la table normale, la même requête fonctionne et le champ est rempli.

Voici les 2 différentes structures de table que je utilise:

tableau normal que la valeur par défaut ne fonctionne

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); 

tableau FTS3 que la valeur par défaut ne fonctionne pas

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); 

Maintenant, si j'utilise cette requête;

insert into table_name default values; 

Sur la première table, je peux voir que le champ created_at est rempli. Sur la deuxième table, le champ est vide.

J'espère que vous pouvez m'aider avec ceci.

Merci!

Répondre

0

Le documentation dit:

Si les noms de colonnes sont explicitement prévus pour la table FTS dans le cadre de l'instruction CREATE TABLE VIRTUEL, puis un nom de type de données peut être spécifié en option pour chaque colonne. C'est du sucre syntaxique pur, les noms de caractères fournis ne sont pas utilisés par FTS ou le noyau SQLite pour n'importe quel but. La même chose s'applique à toutes les contraintes spécifiées avec un nom de colonne FTS - elles sont analysées mais pas utilisées ou enregistrées par le système de quelque manière que ce soit.

Il n'est donc pas possible d'avoir des valeurs par défaut.

Et,

il est impossible de créer des indices ou des déclencheurs attachés aux tables FTS.

Il n'est donc pas possible de contourner ce problème.

+0

Très bien, merci. J'ai vu cette documentation après avoir posté la question mais c'était un peu difficile à comprendre. –