Как установить поле 'DEFAULT' при использовании таблицы fts3 Sqlite?
Я пытаюсь установить поле по умолчанию в моей таблице на текущее время. Когда я использую виртуальную таблицу fts3, вставка строки не заполняет поле по умолчанию, каким оно должно быть. Вместо этого он вставляет ноль.
Если я создаю ту же таблицу, что и обычная таблица, работает точно такой же запрос, и поле заполняется.
Вот две разные структуры таблиц, которые я использую:
Обычная таблица, значение по умолчанию работает
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;
на первой таблице видно, что поле create_at заполнено. На второй таблице поле пустое.
Я надеюсь, что вы можете помочь мне с этим.
Спасибо!
1 ответ
В документации сказано:
Если имена столбцов явно указаны для таблицы FTS как часть оператора CREATE VIRTUAL TABLE, то имя типа данных может быть необязательно указано для каждого столбца. Это чистый синтаксический сахар, предоставленные типы названий не используются FTS или ядром SQLite для каких-либо целей. То же самое относится и к любым ограничениям, указанным вместе с именем столбца FTS - они анализируются, но не используются и не регистрируются системой.
Поэтому невозможно иметь значения по умолчанию.
А также,
невозможно создать индексы или триггеры, привязанные к таблицам FTS.
Так что обойти это невозможно.