Як змінити стовпець у 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 COLONM.
Я вважаю, що ваш єдиний варіант - це:
Ця інша відповідь 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**
ЛІТЕРАТУРА:
pragma writable_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 дозволяє користувачеві перейменовувати таблицю або додавати новий стовпець до існуючої таблиці. Неможливо перейменувати стовпець, видалити стовпець або додати або видалити обмеження з таблиці. Але ви можете змінити тип даних стовпця таблиці або іншу властивість, виконавши наступні кроки.
Детальніше ви можете переглянути за посиланням .