Запрос FMDB MODIFY не работает для установки ограничений в существующей базе данных SQLite - PullRequest
0 голосов
/ 04 июня 2019

В моей базе данных sqlite есть существующий столбец с именем order_id в tbl_order с повторяющимися записями. Я пытаюсь удалить повторяющиеся записи и добавить ограничение (UNIQUE), чтобы решить эту проблему.

Итак, я попробовал следующий код, чтобы решить вышеуказанную проблему. Я проверил предыдущую и текущую версию сборки для управления существующей и новой базой данных.

Он успешно выполняет первый запрос, но показывает ошибку в ограничении изменения.

    if (previousBuildVersion < currentBuildVersion) {
        FMResultSet *result = nil;
        result = [self.objDB executeQuery:@"SELECT DISTINCT order_id FROM tbl_order ORDER BY order_id"];
        [self.objDB executeUpdate:@"ALTER TABLE 'tbl_order' MODIFY \ 'order_id' TEXT NOT NULL UNIQUE \ ;"];
    }

Я получаю эту ошибку в Xcode:

[logging] рядом с «MODIFY»: синтаксическая ошибка

Ошибка БД: 1 "рядом с" ИЗМЕНИТЬ ": синтаксическая ошибка"

Пожалуйста, предложите решение этой проблемы, поскольку у меня очень мало опыта работы с библиотекой FMDB.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 июня 2019

Вы не можете изменить столбец в sqlite после его создания.

Поддерживаются только варианты RENAME TABLE и ADD COLUMN команды ALTER TABLE. Другие виды операций ALTER TABLE, такие как DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT, и т. Д., Опущены.

Пожалуйста, проверьте эту ссылку для более подробной информации: https://www.sqlite.org/omitted.html

...