Как удалить конкретный столбец таблицы с помощью FMDB?

Я пытаюсь удалить столбец last_name из лиц, используя FMDB,

let query = "ALTER TABLE Persons DROP COLUMN last_name;"
try FMDBHelper.database.executeUpdate(query, values: nil)

Но приходит с ошибкой

Ошибка БД: 1 "рядом с" DROP ": синтаксическая ошибка".


person Amit    schedule 08.08.2017    source источник
comment
Возможный дубликат Как удалить или добавить столбец в SQLITE?   -  person Ahmad F    schedule 08.08.2017
comment
@AhmadF FYI, я пытаюсь в SWIFT-FMDB.   -  person Amit    schedule 08.08.2017


Ответы (2)


sqlite не поддерживает DROP COLUMN в ALTER TABLE.

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

Если вам нужно удалить столбцы, создайте новую таблицу, скопируйте туда данные, отбросьте старую таблицу и переименуйте таблицу в ее заданное имя.

Ссылка: http://www.sqlite.org/lang_altertable.html

person Abhishek Jain    schedule 08.08.2017

Обратите внимание, что я отметил, что ваш вопрос может быть продублирован. Я дам ответ, чтобы прояснить его.

Я думаю, что вы упускаете точку, а именно: FMDB - это (как указано в их описании репо):

Это оболочка Objective-C для SQLite

Имейте в виду, что, поскольку FMDB построен поверх SQLite, это не ограничение самой библиотеки; это связано с тем, как работает SQLite ALTER TABLE.

Оператор SQLite ALTER TABLE ограничен переименованием таблицы и add новый столбец в нужную таблицу:

SQLite поддерживает ограниченное подмножество ALTER TABLE. Команда ALTER TABLE в SQLite позволяет пользователю переименовать таблицу или добавить новый столбец в существующую таблицу.

http://www.sqlite.org/lang_altertable.html


Для достижения того, чего вы ищете:

Вы можете проверить ответы Удалить столбец из таблицы SQLite.

person Ahmad F    schedule 08.08.2017