W SQLite możesz użyć ALTER TABLE
oświadczenie, aby dodać kolumnę do istniejącej tabeli.
Jest to właściwie jedna z niewielu rzeczy, które możesz zrobić za pomocą ALTER TABLE
instrukcja w SQLite. Jedyne rzeczy, które możesz zrobić za pomocą ALTER TABLE
Instrukcja w SQLite to zmiana nazwy tabeli, zmiana nazwy kolumny i dodanie nowej kolumny do istniejącej tabeli.
Przykład 1
Wyobraź sobie, że mamy następującą tabelę:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
A teraz chcemy dodać kolumnę o nazwie DOB . Możemy to zrobić za pomocą następującego kodu:
ALTER TABLE Cats ADD COLUMN DOB;
To takie proste.
Ograniczenia
Możesz również podać inne specyfikacje do definicji, takie jak ograniczenia itp., ale istnieją pewne ograniczenia.
W szczególności:
- Nowa kolumna nie może mieć
PRIMARY KEY
lubUNIQUE
ograniczenie. - Nowa kolumna nie może mieć wartości domyślnej
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
lub wyrażenie w nawiasach. - Jeśli
NOT NULL
określono ograniczenie, kolumna musi mieć wartość domyślną inną niżNULL
. - Jeśli włączone są ograniczenia klucza obcego i kolumna z
REFERENCES
została dodana klauzula, kolumna musi mieć wartość domyślnąNULL
. - Jeśli nowa kolumna jest kolumną generowaną, nie może być
STORED
kolumna. Może to byćVIRTUAL
jednak kolumna.
Przykład 2
Oto kolejny przykład, tym razem dodaję więcej specyfikacji do definicji nowej kolumny:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
A teraz chcemy dodać kolumnę o nazwie DOB . Możemy to zrobić za pomocą następującego kodu:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Sprawdź zmiany
Istnieje kilka sposobów sprawdzenia struktury tabeli w SQLite.
Jednym ze sposobów jest użycie PRAGMA table_info()
oświadczenie.
PRAGMA table_info(Dogs);
Wynik:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Widzimy nową kolumnę i widzimy, że ma ona NOT NULL
ograniczenie i że jego wartość domyślna to 0 .