Ограничение таблицы SQLite - уникальный на нескольких столбцах

Я могу найти синтаксис "диаграммами" на этом на веб-сайте SQLite, но никакие примеры и мой код не отказывают. У меня есть другие таблицы с ограничениями на уникальность данных на отдельный столбец, но я хочу добавить ограничение к таблице на двух столбцах. Это - то, что я имею, который вызывает SQLiteException с сообщением "синтаксическая ошибка".

CREATE TABLE name (column defs) 
UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE

Я делаю это на основе следующего:

ограничение таблицы

Чтобы быть ясной, в документации относительно ссылки, которую я предоставил, говорится это CONTSTRAINT name должен прибыть перед моим ограничительным определением.

Что-то, что может привести к решению, хотя то, что то независимо от того, что следует за моими заключенными в скобки определениями столбца, - то, на что жалуется отладчик.

Если я поместил

...last_column_name last_col_datatype) CONSTRAINT ...

ошибкой является близкое "ОГРАНИЧЕНИЕ": синтаксическая ошибка

Если я поместил

...last_column_name last_col_datatype) UNIQUE ...

ошибка почти "УНИКАЛЬНА": синтаксическая ошибка

172
задан Flimzy 15 October 2016 в 13:33
поделиться

2 ответа

Поместите объявление UNIQUE в раздел определения столбца:

CREATE TABLE name (column defs, UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE);

Рабочий пример:

CREATE TABLE a (i INT, j INT, UNIQUE(i, j) ON CONFLICT REPLACE);
336
ответ дан 23 November 2019 в 20:39
поделиться

Что ж, ваш синтаксис не соответствует включенной вами ссылке, которая указывает:

 CREATE TABLE name (column defs) 
    CONSTRAINT constraint_name    -- This is new
    UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE
9
ответ дан 23 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: