V SQLite můžete použít ALTER TABLE
příkaz k přidání sloupce do existující tabulky.
To je vlastně jedna z mála věcí, které můžete dělat s ALTER TABLE
příkaz v SQLite. Jediné, co můžete dělat s ALTER TABLE
příkazem v SQLite je přejmenovat tabulku, přejmenovat sloupec a přidat nový sloupec do existující tabulky.
Příklad 1
Představte si, že máme následující tabulku:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
A nyní chceme přidat sloupec s názvem DOB . Mohli bychom to udělat pomocí následujícího kódu:
ALTER TABLE Cats ADD COLUMN DOB;
Je to tak jednoduché.
Omezení
Můžete také zadat další specifikace k definici, jako jsou omezení atd., ale existují určitá omezení.
Konkrétně:
- Nový sloupec nemůže mít
PRIMARY KEY
neboUNIQUE
omezení. - Nový sloupec nemůže mít výchozí hodnotu
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, nebo výraz v závorkách. - Pokud
NOT NULL
omezení, pak musí mít sloupec výchozí hodnotu jinou nežNULL
. - Pokud jsou povolena omezení cizího klíče a sloupec s
REFERENCES
je přidána klauzule, sloupec musí mít výchozí hodnotuNULL
. - Pokud je nový sloupec vygenerovaný, nelze jej
STORED
sloupec. Může to býtVIRTUAL
i když.
Příklad 2
Zde je další příklad, tentokrát k definici nového sloupce přidávám další specifikace:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
A nyní chceme přidat sloupec s názvem DOB . Mohli bychom to udělat pomocí následujícího kódu:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Zkontrolujte změny
Existuje několik způsobů, jak zkontrolovat strukturu tabulky v SQLite.
Jedním ze způsobů je použití PRAGMA table_info()
prohlášení.
PRAGMA table_info(Dogs);
Výsledek:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Vidíme nový sloupec a vidíme, že má NOT NULL
omezení a že jeho výchozí hodnota je 0 .