Как изменить столбец в 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.
Я считаю, что ваш единственный вариант - это:
Этот другой ответ Stackoverflow подробно объясняет процесс
Хотя это правда, что 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 version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **create table BOOKS ( title TEXT NOT NULL, publication_date TEXT NOT
NULL);**
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
Error: BOOKS.publication_date may not be NULL
sqlite> **PRAGMA writable_schema = 1;**
sqlite> **UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT
NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';**
sqlite> **PRAGMA writable_schema = 0;**
sqlite> **.q**
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
sqlite> **.q**
ССЫЛКИ СЛЕДУЮЩИЕ:
pragmawritable_schema
Когда эта прагма включена, таблицы SQLITE_MASTER, в которых база данных может быть изменена с помощью обычных операторов UPDATE, INSERT и DELETE. Предупреждение: неправильное использование этой прагмы может легко привести к повреждению файла базы данных.
[изменить таблицу] (Из http://www.sqlite.org/lang_altertable.html )
SQLite поддерживает ограниченное подмножество ALTER TABLE. Команда ALTER TABLE в SQLite позволяет пользователю переименовать таблицу или добавить новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец, а также добавить или удалить ограничения из таблицы.
SQLite поддерживает ограниченное подмножество ALTER TABLE. Команда ALTER TABLE в SQLite позволяет пользователю переименовать таблицу или добавить новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец, а также добавить или удалить ограничения из таблицы. Но вы можете изменить тип данных столбца таблицы или другое свойство, выполнив следующие действия.
Более подробно вы можете пройти по ссылке .