Как изменить колонку sqlite (iPhone)? - PullRequest
1 голос
/ 08 марта 2009

Для iPhone, поскольку sqlite3 не поддерживает ALTER для столбца, как мне изменить тип данных столбца в таблице, которая должна сохранять данные?

Ответы [ 2 ]

3 голосов
/ 08 марта 2009

SQLite использует манифестную (динамическую) типизацию. Типы столбцов являются ориентировочными, поэтому изменение типа данных столбца не требуется. Столбец Affinity используется только для обеспечения совместимости со статически типизированными базами данных.

Из документации SQLite :

SQLite использует динамическую типизацию. Оно делает не применять ограничения типа данных. любой данные могут быть вставлены в любой столбец. Вы можете поместить строки произвольной длины в целочисленные столбцы с плавающей точкой числа в логических столбцах или даты в символьных столбцах. Тип данных вы назначить столбцу в CREATE TABLE команда не ограничивает какие данные можно поместить в этот столбец ...

SQLite использует объявленный тип колонка как подсказка, которую вы предпочитаете значения в этом формате. Таким образом, для Например, если столбец имеет тип INTEGER и вы пытаетесь вставить строку в этот столбец, SQLite попытается преобразовать строку в целое число. Если это возможно, он вставляет целое число вместо. Если нет, то вставляется строка

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

2 голосов
/ 08 марта 2009

Ясность верна, но я хотел бы добавить, что если сходство типов столбца создает проблемы для вас (например, если строки, которые выглядят как числа, преобразуются и сохраняются неточно), единственный вариант - скопировать все данные во временную таблицу, удалите оригинал, воссоздайте его с правильным определением и скопируйте данные обратно. Насколько я знаю, это не считается функцией. ; ^)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...