Ограничение таблицы 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 ...
ошибка рядом с "UNIQUE": синтаксическая ошибка
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