В SQLite можете да използвате ALTER TABLE оператор за добавяне на колона към съществуваща таблица.
Това всъщност е едно от малкото неща, които можете да правите с ALTER TABLE изявление в SQLite. Единствените неща, които можете да правите с ALTER TABLE оператор в SQLite е преименуване на таблица, преименуване на колона и добавяне на нова колона към съществуваща таблица.
Пример 1
Представете си, че имаме следната таблица:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
); И сега искаме да добавим колона, наречена DOB . Можем да направим това с помощта на следния код:
ALTER TABLE Cats ADD COLUMN DOB; Това е толкова просто.
Ограничения
Можете също да предоставите други спецификации към дефиницията, като ограничения и т.н., но има някои ограничения.
По-специално:
- Новата колона не може да има
PRIMARY KEYилиUNIQUEограничение. - Новата колона не може да има стойност по подразбиране
CURRENT_TIME,CURRENT_DATE,CURRENT_TIMESTAMP, или израз в скоби. - Ако
NOT NULLе посочено ограничение, тогава колоната трябва да има стойност по подразбиране, различна отNULL. - Ако ограниченията на външния ключ са разрешени и колона с
REFERENCESсе добавя клауза, колоната трябва да има стойност по подразбиранеNULL. - Ако новата колона е генерирана колона, тя не може да бъде
STOREDколона. Може да бъдеVIRTUALколона обаче.
Пример 2
Ето още един пример, този път добавям още спецификации към дефиницията на новата колона:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
); И сега искаме да добавим колона, наречена DOB . Можем да направим това с помощта на следния код:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0; Проверете промените
Има няколко начина за проверка на структурата на таблица в SQLite.
Един от начините е да използвате PRAGMA table_info() изявление.
PRAGMA table_info(Dogs); Резултат:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Можем да видим новата колона и можем да видим, че има NOT NULL ограничение и че стойността му по подразбиране е 0 .