In SQLite können Sie die ALTER TABLE
verwenden Anweisung zum Hinzufügen einer Spalte zu einer vorhandenen Tabelle.
Dies ist tatsächlich eines der wenigen Dinge, die Sie mit ALTER TABLE
tun können Anweisung in SQLite. Das Einzige, was Sie mit ALTER TABLE
machen können Anweisung in SQLite ist eine Tabelle umbenennen, eine Spalte umbenennen und einer bestehenden Tabelle eine neue Spalte hinzufügen.
Beispiel 1
Stellen Sie sich vor, wir haben die folgende Tabelle:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
Und wir wollen jetzt eine Spalte namens DOB hinzufügen . Wir könnten das mit dem folgenden Code tun:
ALTER TABLE Cats ADD COLUMN DOB;
So einfach ist das.
Einschränkungen
Sie können der Definition auch andere Spezifikationen wie Einschränkungen usw. hinzufügen, aber es gibt einige Einschränkungen.
Insbesondere:
- Die neue Spalte darf keinen
PRIMARY KEY
haben oderUNIQUE
Einschränkung. - Die neue Spalte darf keinen Standardwert von
CURRENT_TIME
haben ,CURRENT_DATE
,CURRENT_TIMESTAMP
, oder ein Ausdruck in Klammern. - Wenn ein
NOT NULL
Einschränkung angegeben ist, muss die Spalte einen anderen Standardwert alsNULL
haben . - Wenn Foreign Key Constraints aktiviert sind und eine Spalte mit einem
REFERENCES
-Klausel hinzugefügt wird, muss die Spalte den StandardwertNULL
haben . - Wenn die neue Spalte eine generierte Spalte ist, kann sie nicht
STORED
werden Säule. Es kann einVIRTUAL
sein Spalte.
Beispiel 2
Hier ist ein weiteres Beispiel, diesmal füge ich der Definition der neuen Spalte weitere Spezifikationen hinzu:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
Und wir wollen jetzt eine Spalte namens DOB hinzufügen . Wir könnten das mit dem folgenden Code tun:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Überprüfen Sie die Änderungen
Es gibt mehrere Möglichkeiten, die Struktur einer Tabelle in SQLite zu überprüfen.
Eine Möglichkeit ist die Verwendung von PRAGMA table_info()
Erklärung.
PRAGMA table_info(Dogs);
Ergebnis:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Wir können die neue Spalte sehen, und wir können sehen, dass sie einen NOT NULL
hat Beschränkung und dass ihr Standardwert 0 ist .