Не удается создать уникальные частичные индексы — Sqlite3

Рассмотрим следующую таблицу.

CREATE TABLE IF NOT EXISTS wsfiles
(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  website_id integer NOT NULL,
  parent_id integer,
  archive_id integer,
  path character varying,
  path_sha character varying NOT NULL,
  target character varying,
  name character varying NOT NULL,
  is_directory boolean
  CONSTRAINT uniq_file_website_backup UNIQUE (archive_id, path_sha) ON CONFLICT REPLACE
);

И мне нужно создать следующий уникальный частичный индекс.

CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_directory ON wsfiles(path_sha) WHERE is_directory = 1;

Но при выполнении приведенной выше схемы я получаю синтаксическую ошибку рядом с предложением WHERE в запросе CREATE UNIQUE INDEX. Это хорошо работает на моей локальной машине, и проблема возникает, когда я выполняю на рабочей машине.

Error: near line 98: near "WHERE": syntax error

Версия sqlite3 для производственной машины — 3.7.17.

Версия sqlite3 для локальной машины — 3.8.5.


person Yasitha    schedule 14.01.2016    source источник


Ответы (1)


В документации говорится:

Частичные индексы поддерживаются в SQLite, начиная с версии 3.8.0.

person CL.    schedule 14.01.2016