In SQLite kun je de ALTER TABLE
. gebruiken statement om een kolom aan een bestaande tabel toe te voegen.
Dit is eigenlijk een van de weinige dingen die je kunt doen met de ALTER TABLE
verklaring in SQLite. Het enige dat u kunt doen met de ALTER TABLE
statement in SQLite is de naam van een tabel wijzigen, een kolom hernoemen en een nieuwe kolom toevoegen aan een bestaande tabel.
Voorbeeld 1
Stel je voor dat we de volgende tabel hebben:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
En we willen nu een kolom toevoegen met de naam DOB . We zouden dat kunnen doen met de volgende code:
ALTER TABLE Cats ADD COLUMN DOB;
Zo simpel is het.
Beperkingen
U kunt ook andere specificaties aan de definitie geven, zoals beperkingen, enz., maar er zijn enkele beperkingen.
In het bijzonder:
- De nieuwe kolom mag geen
PRIMARY KEY
. hebben ofUNIQUE
beperking. - De nieuwe kolom mag geen standaardwaarde hebben van
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, of een uitdrukking tussen haakjes. - Als een
NOT NULL
beperking is opgegeven, moet de kolom een andere standaardwaarde hebben danNULL
. - Als beperkingen voor externe sleutels zijn ingeschakeld en een kolom met een
REFERENCES
clausule is toegevoegd, moet de kolom de standaardwaardeNULL
. hebben . - Als de nieuwe kolom een gegenereerde kolom is, kan deze niet worden
STORED
kolom. Het kan eenVIRTUAL
. zijn kolom wel.
Voorbeeld 2
Hier is nog een voorbeeld, deze keer voeg ik wat meer specificaties toe aan de definitie van de nieuwe kolom:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
En we willen nu een kolom toevoegen met de naam DOB . We zouden dat kunnen doen met de volgende code:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Controleer de wijzigingen
Er zijn verschillende manieren om de structuur van een tabel in SQLite te controleren.
Een manier is om de PRAGMA table_info()
. te gebruiken verklaring.
PRAGMA table_info(Dogs);
Resultaat:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
We kunnen de nieuwe kolom zien en we kunnen zien dat deze een NOT NULL
. heeft beperking, en dat de standaardwaarde 0 . is .