Di SQLite, Anda dapat menggunakan ALTER TABLE
pernyataan untuk menambahkan kolom ke tabel yang ada.
Ini sebenarnya adalah salah satu dari sedikit hal yang dapat Anda lakukan dengan ALTER TABLE
pernyataan di SQLite. Satu-satunya hal yang dapat Anda lakukan dengan ALTER TABLE
pernyataan di SQLite adalah mengubah nama tabel, mengubah nama kolom, dan menambahkan kolom baru ke tabel yang ada.
Contoh 1
Bayangkan kita memiliki tabel berikut:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
Dan sekarang kita ingin menambahkan kolom bernama DOB . Kita bisa melakukannya dengan menggunakan kode berikut:
ALTER TABLE Cats ADD COLUMN DOB;
Sesederhana itu.
Pembatasan
Anda juga dapat memberikan spesifikasi lain untuk definisi, seperti batasan, dll, tetapi ada beberapa batasan.
Khususnya:
- Kolom baru tidak boleh memiliki
PRIMARY KEY
atauUNIQUE
kendala. - Kolom baru tidak boleh memiliki nilai default
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, atau ekspresi dalam tanda kurung. - Jika
NOT NULL
batasan ditentukan, maka kolom harus memiliki nilai default selainNULL
. - Jika batasan kunci asing diaktifkan dan kolom dengan
REFERENCES
klausa ditambahkan, kolom harus memiliki nilai defaultNULL
. - Jika kolom baru adalah kolom yang dibuat, tidak dapat
STORED
kolom. Itu bisa berupaVIRTUAL
kolom sekalipun.
Contoh 2
Berikut contoh lain, kali ini saya menambahkan beberapa spesifikasi lagi untuk definisi kolom baru:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
Dan sekarang kita ingin menambahkan kolom bernama DOB . Kita bisa melakukannya dengan menggunakan kode berikut:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Periksa Perubahan
Ada beberapa cara untuk memeriksa struktur tabel di SQLite.
Salah satu caranya adalah dengan menggunakan PRAGMA table_info()
pernyataan.
PRAGMA table_info(Dogs);
Hasil:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Kita dapat melihat kolom baru, dan kita dapat melihat bahwa kolom tersebut memiliki NOT NULL
kendala, dan nilai defaultnya adalah 0 .