В моем приложении для Android есть база данных SQLite, которую я хотел бы обновить. Обновление требует изменения типа данных с INT на FLOAT. Я понимаю, что для достижения этого в SQLite нужно создать новую таблицу, скопировать данные, а затем заменить старую таблицу новой. Копирование будет выполнено следующим образом:
INSERT INTO newTable SELECT * FROM oldTable
, где целочисленные значения будут удобно преобразованы в значения с плавающей запятой.
Теперь существует проблема, заключающаяся в том, что другой, ранее необязательный столбец теперь равен ´NOTNULL´, но имеет значение по умолчанию. Я хотел бы, чтобы все экземпляры NULL были заменены значениями по умолчанию в рамках вышеуказанного процесса, используя следующую инструкцию:
INSERT INTO newTable SELECT * FROM oldTable ON CONFLICT REPLACE
или, для полноты, в Android / Kotlin:
db.execSQL(“INSERT INTO newTable SELECT * FROM oldTable ON CONFLICT REPLACE”)
Это дает мне синтаксическую ошибку, и я не смог найти подходящий пример в другом месте. Каков будет правильный синтаксис для достижения этого - и то, что я пытаюсь сделать, даже возможно?