Jak zmienić kolumnę w sqlite? To jest wPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Uważam, że w sqlite nie ma w ogóle ALTER COLUMN, obsługiwana jest tylko opcja ALTER TABLE.
Dowolny pomysł? Dzięki!
Jak zmienić kolumnę w sqlite? To jest wPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Uważam, że w sqlite nie ma w ogóle ALTER COLUMN, obsługiwana jest tylko opcja ALTER TABLE.
Dowolny pomysł? Dzięki!
Odpowiedzi:
W sqlite nie ma ALTER COLUMN.
Uważam, że jedyną opcją jest:
Ta inna odpowiedź Stackoverflow wyjaśnia szczegółowo ten proces
Chociaż prawdą jest, że nie ma ALTER COLUMN, jeśli chcesz tylko zmienić nazwę kolumny, usunąć ograniczenie NOT NULL lub zmienić typ danych, możesz użyć następującego zestawu niebezpiecznych poleceń:
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;
Będziesz musiał zamknąć i ponownie otworzyć połączenie lub odkurzyć bazę danych, aby ponownie załadować zmiany w schemacie.
Na przykład:
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**
ODNIESIENIA NASTĘPUJĄCE:
pragma writable_schema
Gdy ta pragma jest włączona, tabele SQLITE_MASTER, w których można zmienić bazę danych za pomocą zwykłych instrukcji UPDATE, INSERT i DELETE. Ostrzeżenie: niewłaściwe użycie tej pragmy może łatwo spowodować uszkodzenie pliku bazy danych.
[alter table] (z http://www.sqlite.org/lang_altertable.html )
SQLite obsługuje ograniczony podzbiór ALTER TABLE. Polecenie ALTER TABLE w SQLite umożliwia użytkownikowi zmianę nazwy tabeli lub dodanie nowej kolumny do istniejącej tabeli. Nie można zmienić nazwy kolumny, usunąć kolumny ani dodać lub usunąć ograniczeń z tabeli.
SQLite obsługuje ograniczony podzbiór ALTER TABLE. Polecenie ALTER TABLE w SQLite umożliwia użytkownikowi zmianę nazwy tabeli lub dodanie nowej kolumny do istniejącej tabeli. Nie można zmienić nazwy kolumny, usunąć kolumny ani dodać lub usunąć ograniczeń z tabeli. Możesz jednak zmienić typ danych kolumny tabeli lub inną właściwość, wykonując następujące kroki.
Aby uzyskać więcej informacji, możesz odnieść się do linku .