Как изменить колонку в sqlite?
Это находится в Postgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Я уверен, что в sqlite вообще нет ALTER COLUMN, поддерживается только ALTER TABLE.
Любая идея? Спасибо!
Как изменить колонку в sqlite?
Это находится в Postgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Я уверен, что в sqlite вообще нет ALTER COLUMN, поддерживается только ALTER TABLE.
Любая идея? Спасибо!
В sqlite нет ALTER COLUMN.
Я считаю, что ваш единственный вариант:
fooobar.com/questions/29557/... подробно описывает процесс
Хотя верно, что нет ALTER COLUMN, если вы хотите только переименовать столбец, сбросить ограничение NOT NULL или изменить тип данных, вы можете использовать следующий набор опасных команд:
PRAGMA writable_schema = 1;
UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';
PRAGMA writable_schema = 0;
Вам нужно будет либо закрыть, либо снова открыть соединение, либо очистить базу данных, чтобы перезагрузить изменения в схему.
Например:
Y: > sqlite3 booktest
Версия SQLite 3.7.4
Введите ".help" для получения инструкций
Введите SQL-запросы, завершенные символом ";"
sqlite > создать таблицу КНИГИ (название ТЕКСТ NOT NULL, publication_date ТЕКСТ НЕТ);
sqlite > вставить в ЦЕННОСТИ КНИГИ ( "NULLTEST", null);
Ошибка: BOOKS.publication_date не может быть NULL
sqlite > PRAGMA writable_schema = 1;
sqlite > UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS (название ТЕКСТ NOT NULL, publication_date TEXT)' ГДЕ ИМЯ = 'КНИГИ';
sqlite > PRAGMA writable_schema = 0;
sqlite > .q
Y: > sqlite3 booktest
Версия SQLite 3.7.4
Введите ".help" для получения инструкций
Введите SQL-запросы, завершенные символом ";"
sqlite > вставить в ЦЕННОСТИ КНИГИ ( "NULLTEST", null);
sqlite > .q
ССЫЛКИ ПОСЛЕДУЮЩИЕ:
pragma writable_schema
Когда эта прагма включена, таблицы SQLITE_MASTER, в которых база данных может быть изменена с помощью обычных операторов UPDATE, INSERT и DELETE. Предупреждение: неправильное использование этой прагмы может привести к повреждению файла базы данных.
[alter table] (Из http://www.sqlite.org/lang_altertable.html)
SQLite поддерживает ограниченное подмножество ALTER TABLE. Команда ALTER TABLE в SQLite позволяет пользователю переименовать таблицу или добавить новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец или добавить или удалить ограничения из таблицы.
SQLite поддерживает ограниченное подмножество ALTER TABLE. Команда ALTER TABLE в SQLite позволяет пользователю переименовать таблицу или добавить новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец или добавить или удалить ограничения из таблицы. Но вы можете изменить тип данных столбца таблицы или другое свойство, выполнив следующие шаги.
Подробнее см. ссылку .
Ни один из других ответов неверен, но я нашел самый простой способ обработки сложных ALTERs через Sqliteman (FOSS).
Он будет обрабатывать действие жонглирования (как описано в других ответах) для вас.
Выберите таблицу books_book, через Меню: Контекст > Изменить таблицу: Отменить проверку NULL > Изменить, сделать
Для тех, кто ищет и находит эту страницу в этом году 2017 года: Если вы новичок в SQLite и/или предпочитаете графический интерфейс, "sqlitebrowser" сделает это за несколько кликов.
Программа "sqlitebrowser" (DB Browser for SQLite) является открытым исходным кодом и бесплатна. Для Linux он доступен из репозитория. Надеюсь, это поможет кому-то!