В моем приложении у меня есть база данных sqlite для коллекционирования. База данных предварительно заполнена, но пользователь добавляет данные, чтобы указать, что он владеет этим конкретным элементом. Предметы коллекционирования разбиты на категории, каждая из которых имеет свою таблицу.
Итак, в первой версии приложения у меня есть бейсболисты 2011 года, идентифицированные по номеру и имени. У меня есть все карты с 2009 по 2011 годы в базе данных (с таблицей для каждого года), которая находится в папке активов и импортируется через InputStream. Пока все отлично работает, и пользователь может добавить флаг, говоря, что он владеет картой.
Моя проблема в том, что теперь я хочу добавить карты 2012 года, поэтому я добавил их в качестве дополнительной таблицы в свою базу данных ресурсов для версии 2 приложения. Чего я не могу добиться - это добавить новую (предварительно заполненную) таблицу в существующую базу данных при обновлении, не теряя флаги, установленные пользователем.
Очевидно, я не хочу потерять данные, которые уже были введены пользователями, поэтому нет таблицы DROP.
Я попытался получить новую таблицу на Upgrade, прикрепив обновленную базу данных и скопировав отсутствующую таблицу. К сожалению, кажется, что я не могу прикрепить таблицу во время транзакции, как показывает ошибка, которую я получаю:
Ошибка 1 (невозможно подключить базу данных в транзакции) на 0x2a1900 при выполнении 'ATTACH DATABASE' /data/data/my.app/databases/updateddb 'как myNewDb'
Я что-то упустил, есть ли обходной путь? Или я поступаю неправильно?