I SQLite kan du bruge ALTER TABLE
sætning for at tilføje en kolonne til en eksisterende tabel.
Dette er faktisk en af de få ting, du kan gøre med ALTER TABLE
sætning i SQLite. De eneste ting du kan gøre med ALTER TABLE
sætning i SQLite er at omdøbe en tabel, omdøbe en kolonne og tilføje en ny kolonne til en eksisterende tabel.
Eksempel 1
Forestil dig, at vi har følgende tabel:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
Og vi vil nu tilføje en kolonne kaldet DOB . Vi kunne gøre det ved at bruge følgende kode:
ALTER TABLE Cats ADD COLUMN DOB;
Så enkelt er det.
Begrænsninger
Du kan også angive andre specifikationer til definitionen, såsom begrænsninger osv., men der er nogle begrænsninger.
Især:
- Den nye kolonne kan ikke have en
PRIMARY KEY
ellerUNIQUE
begrænsning. - Den nye kolonne kan ikke have en standardværdi på
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, eller et udtryk i parentes. - Hvis en
NOT NULL
begrænsning er angivet, så skal kolonnen have en anden standardværdi endNULL
. - Hvis fremmednøglebegrænsninger er aktiveret og en kolonne med en
REFERENCES
klausul tilføjes, skal kolonnen have en standardværdi påNULL
. - Hvis den nye kolonne er en genereret kolonne, kan den ikke
STORED
kolonne. Det kan være enVIRTUAL
kolonne dog.
Eksempel 2
Her er et andet eksempel, denne gang tilføjer jeg nogle flere specifikationer til definitionen af den nye kolonne:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
Og vi vil nu tilføje en kolonne kaldet DOB . Vi kunne gøre det ved at bruge følgende kode:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Tjek ændringerne
Der er flere måder at kontrollere strukturen af en tabel i SQLite.
En måde er at bruge PRAGMA table_info()
erklæring.
PRAGMA table_info(Dogs);
Resultat:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Vi kan se den nye kolonne, og vi kan se, at den har en NOT NULL
begrænsning, og at dens standardværdi er 0 .