Klucz główny i autoinkrementacja w SQLite

W SQLite tworzenie klucza głównego dla kolumny i autoinkrementacja jego wartości jest niezwykle prosta.

Uruchamiamy  SQLite za pomocą pliku sqlite3.exe. Tworzymy nową lub uruchamiamy już istniejącą bazę danych za pomocą komendy .open. U mnie jest to baza test.db.

sqlite> .open test.db

Następnie tworzymy tabelę o nazwie t z kolumną o nazwie id i typie danych integer. Kolumna ma stanowić  klucz główny, więc dopisujemy PRIMARY KEY.  Klucz główny sam w sobie oznacza wartość typu
UNIQUE NOT NULL, więc jej nie musimy dopisywać.

sqlite> create table t(id integer primary key, name text);

W SQLite zastosowanie do typu danych w kolumnie takich podobnych typów jak m.in. INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT UNSIGNED BIG INT, INT2, INT8 spowoduje potraktowanie ich jako INTEGER.
Została utworzona tabela t z kluczem głównym. Jak jednak zastosować autoinkrementację ? W SQLite nie stosuje się w tym celu specjalnej klauzuli, jak ma to miejsce w przypadku innych serwerów baz danych. Po prostu podczas wstawiania danych wystarczy w miejsce wartości kolumny wstawić NULL lub pominąć kolumnę. Istnieje także możliwość w dowolnym momencie wstawić rekord z konkretną wartością wpisaną do tej kolumny. Pokazuje to poniższy przykład.

sqlite> insert into t values(null,'note');
sqlite> insert into t values(7,'note');
sqlite> insert into t values(null,'ballpoint');

Wynik pobrania danych z tabeli t:

sqlite> select * from t;
1|pencil
2|pen
3|note
7|note
8|ballpoint


Tak jak w przypadku kluczy głównych w innych bazach, tak i tu nie można wstawić do takiej kolumny wartości, która już istnieje w tabeli.

sqlite> insert into t values(7,'rubber');

xx2