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ść typuUNIQUE 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');