Там нет прямого пути к ALTER COLUMN в SQLite.
Я считаю, что единственный вариант заключается в следующем:
- Переименовать таблицу во временное имя
- Создать новую таблицу без NOT NULL ограничения
- Скопируйте содержимое старой таблицы в новую один
- Удалить старую таблицу
This other Stackoverflow answer объясняет процесс в деталях
Кроме того,
ИЗМЕНИТЬ КОЛОННА В ТАБЛИЦЕ
Вы не можете использовать оператор ALTER TABLE для изменения столбца в SQLite. Вместо этого вам нужно будет переименовать таблицу, создать новую таблицу и скопировать данные в новую таблицу.
Синтаксис
Синтаксис ИЗМЕНИТЬ столбцом в таблице в SQLite является:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE table1 RENAME TO _table1_old;
CREATE TABLE table1 (
(column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
INSERT INTO table1 (column1, column2)
SELECT column1, column2
FROM _table1_old;
COMMIT;
PRAGMA foreign_keys=on;
Пример
Давайте посмотрим на пример, который показывает, как для изменения столбца в таблице SQLite.
Например, если бы мы имели таблицу сотрудников, которые имели столбец под названием last_name, который был определен как CHAR тип данных:
CREATE TABLE employees
(employee_id INTEGER PRIMARY KEY AUTOINCREMENT,
last_name CHAR NOT NULL,
first_name VARCHAR,
hire_date DATE
);
И мы хотели изменить тип данных на last_name поле для VARCHAR, мы могли бы сделать следующее:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE employees RENAME TO _employees_old;
CREATE TABLE employees
(employee_id INTEGER PRIMARY KEY AUTOINCREMENT,
last_name VARCHAR NOT NULL,
first_name VARCHAR,
hire_date DATE
);
INSERT INTO employees (employee_id, last_name, first_name, hire_date)
SELECT employee_id, last_name, first_name, hire_date
FROM _employees_old;
COMMIT;
PRAGMA foreign_keys=on;
Этот пример переименовывать наша таблица существующих сотрудников к _employees_old. > Затем он создаст новую таблицу сотрудников с полем last_name, определенным как тип данных VARCHAR. Затем он будет вставлять все данные из таблицы _employees_old в таблицу сотрудников.