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.