Я могу найти синтаксис "диаграммами" на этом на веб-сайте 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 в раздел определения столбца:
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