Ограничение таблицы 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 ...

ошибка рядом с "уникальным": синтаксическая ошибка

2 159

2 ответа:

поместите уникальное объявление в раздел определения столбца:

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

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

 CREATE TABLE name (column defs) 
    CONSTRAINT constraint_name    -- This is new
    UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE