2015-01-18 1 views
0

В моем приложении iOS я хочу изменить тип данных столбца в базе данных.Как изменить тип данных столбца sql в iOS?

ALTER TABLE XXX ALTER COLUMN myColumn INT. 

Я всегда получаю ближнее ALTER ошибки синтаксиса " Как решить эту проблему? Спасибо за помощь.

+0

Какую базу вы используете? sqlite3? – Paulw11

+0

Да, как исправить ошибку? – dawei211

ответ

0
  1. ALTER TABLE table ADD newColumn INTEGER;
  2. UPDATE table SET newColumn = oldColumn;
+0

Есть ли прямой способ его получить?Как изменить, изменить или изменить SQLite – dawei211

+0

Да, как сказал Роб, вы не можете изменить тип столбца в SQLite. Поэтому вам нужно создать новое поле, а затем обновить старый столбец до нового столбца. – aliyasar

1

Вы не можете изменить тип столбца. Вы можете создать новую таблицу с использованием правильного типа данных для столбца на этот раз, а затем выбрать данные из старой таблицы и вставить их в новую таблицу. Полная процедура описана в ALTER TABLE documentation:

  1. Помните формат всех индексов и триггеров, связанных с таблицей X. Эта информация будет необходима на этапе 7 ниже. Один из способов сделать это - запустить такой запрос, как: SELECT type, sql FROM sqlite_master WHERE tbl_name='X'.

  2. Используйте CREATE TABLE для создания новой таблицы «new_X», которая находится в желаемом пересмотренном формате таблицы X. Убедитесь, что имя «new_X» не сталкивается с каким-либо существующим именем таблицы, конечно.

  3. Передача содержимого из X в new_X с помощью оператора, такого как: INSERT INTO new_X SELECT ... FROM X.

  4. Если включены ограничения внешнего ключа, отключите их, используя PRAGMA foreign_keys=OFF.

  5. Оставьте старый стол X: DROP TABLE X.

  6. Измените имя new_X на X, используя: ALTER TABLE new_X RENAME TO X.

  7. Использование CREATE INDEX и CREATE TRIGGER для восстановления индексов и триггеров, связанных с таблицей X. Возможно использовать старый формат триггеров и индексов, сохраненных с шага 1 выше в качестве руководства, внесение изменений в зависимости от обстоятельств для изменения.

  8. Если ограничения внешнего ключа были первоначально включены (до шага 4), а затем запустить PRAGMA foreign_key_check, чтобы убедиться, что изменение схемы не нарушало никаких ограничений внешнего ключа, и запустить PRAGMA foreign_keys=ON для повторного включения внешнего ключа.

  9. Если какие-либо взгляды относятся к таблице X способом, на который влияет изменение схемы, то оставьте эти виды с помощью DROP VIEW и заново создайте их с любыми изменениями, необходимыми для изменения схемы с использованием CREATE VIEW.

Примечание, SQLite использует type affinity (определение столбца не изменяет тип данных, вставить в таблицу). Поэтому, если вы измените тип данных, вы также захотите изменить данные.

+0

благодарит за вашу помощь. – dawei211

+0

Никаких благодарностей (буквально, lol). См. [Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone-answers) – Rob

 Смежные вопросы

  • Нет связанных вопросов^_^