Wie ändere ich die Spalte in SQLite? Das ist inPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Ich glaube, es gibt überhaupt keine ALTER COLUMN in SQLite, nur ALTER TABLE wird unterstützt.
Irgendeine Idee? Vielen Dank!
Antworten:
Es gibt keine ALTER COLUMN in SQLite.
Ich glaube, Ihre einzige Option ist:
Diese andere Stackoverflow-Antwort erläutert den Vorgang ausführlich
quelle
Es ist zwar richtig, dass es sich nicht um ALTER COLUMN handelt. Wenn Sie jedoch nur die Spalte umbenennen, die NOT NULL-Einschränkung löschen oder den Datentyp ändern möchten, können Sie die folgenden gefährlichen Befehle verwenden:
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;
Sie müssen entweder Ihre Verbindung schließen und erneut öffnen oder die Datenbank staubsaugen, um die Änderungen erneut in das Schema zu laden.
Zum Beispiel:
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**
FOLGENDE REFERENZEN:
pragma writable_schema
Wenn dieses Pragma aktiviert ist, die SQLITE_MASTER-Tabellen, in denen die Datenbank mit normalen UPDATE-, INSERT- und DELETE-Anweisungen geändert werden kann. Warnung: Der Missbrauch dieses Pragmas kann leicht zu einer beschädigten Datenbankdatei führen.
[Tabelle ändern] (Von http://www.sqlite.org/lang_altertable.html )
SQLite unterstützt eine begrenzte Teilmenge von ALTER TABLE. Mit dem Befehl ALTER TABLE in SQLite kann der Benutzer eine Tabelle umbenennen oder einer vorhandenen Tabelle eine neue Spalte hinzufügen. Es ist nicht möglich, eine Spalte umzubenennen, eine Spalte zu entfernen oder Einschränkungen zu einer Tabelle hinzuzufügen oder daraus zu entfernen.
quelle
SQLite unterstützt eine begrenzte Teilmenge von ALTER TABLE. Mit dem Befehl ALTER TABLE in SQLite kann der Benutzer eine Tabelle umbenennen oder einer vorhandenen Tabelle eine neue Spalte hinzufügen. Es ist nicht möglich, eine Spalte umzubenennen, eine Spalte zu entfernen oder Einschränkungen zu einer Tabelle hinzuzufügen oder daraus zu entfernen. Sie können den Datentyp der Tabellenspalte oder eine andere Eigenschaft jedoch durch die folgenden Schritte ändern.
Weitere Informationen finden Sie unter dem Link .
quelle