Вместо использования ALTER TABLE ADD COLUMN
создайте новую таблицу с дополнительным столбцом и скопируйте старые данные. Это освободит вас от ограничений ALTER TABLE
и позволит установить ограничение NOT NULL
без значения по умолчанию.
ALTER TABLE YourTable RENAME TO OldTable;
CREATE TABLE YourTable (/* old cols */, NewColumn DATETIME NOT NULL);
INSERT INTO YourTable SELECT *, '2000-01-01 00:00:00' FROM OldTable;
DROP TABLE OldTable;
Редактировать: Официальная документация SQLite для ALTER TABLE теперь предостерегает от вышеуказанной процедуры, поскольку она «может повредить ссылки на эту таблицу в триггерах, представлениях и ограничениях внешнего ключа». Безопасной альтернативой является использование временного имени для таблицы new , например:
CREATE TABLE NewTable (/* old cols */, NewColumn DATETIME NOT NULL);
INSERT INTO NewTable SELECT *, '2000-01-01 00:00:00' FROM YourTable;
DROP TABLE YourTable;
ALTER TABLE NewTable RENAME TO YourTable;