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 KEYellerUNIQUEbegræ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 NULLbegrænsning er angivet, så skal kolonnen have en anden standardværdi endNULL. - Hvis fremmednøglebegrænsninger er aktiveret og en kolonne med en
REFERENCESklausul tilføjes, skal kolonnen have en standardværdi påNULL. - Hvis den nye kolonne er en genereret kolonne, kan den ikke
STOREDkolonne. Det kan være enVIRTUALkolonne 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 .