1. Jak numerować kolejne rekordy w SQL Server?
Autonumeracja w SQL Server może odbywać się na dwa sposoby. Możemy nadać kolumnie atrybut IDENTITY(). Możemy też wykorzystać do tego tzw. sekwencje. W kursie sql server opiszę obie metody autonumeracji. W tym artykule dowiesz się jak wykorzystać do tego atrybut IDENTITY oraz jak go połączyć z kluczem głównym tabeli.
2. Autonumeracja w SQL Server za pomocą atrybytu IDENTITY.
Najprostszą metodą numeracji kolejnych rekordów w kolumnie jest zastosowanie atrybutu IDENTITY. W jaki sposób to zrobić? Podczas tworzenia nowej tabeli zaraz za typem danych wstaw atrybut IDENTITY(1, 1). Tak stworzony identyfikator będzie zaczynał się od wartości 1. Z każdym dodatkowym rekordem wartość identyfikatora będzie wzrastać o 1. Przykładowo, jeśli chcesz, by Twój identyfikator zaczynał się od liczby milion i przyrastał zawsze o 10 wartości w górę, powinieneś zapisać to w ten sposób: IDENTITY(1000000, 10). Identyfikator IDENTITY przydaje się przy tworzeniu klucza głównego tabeli – PRIMARY KEY, o czym możesz więcej przeczytać w artykule o Constraintach w SQL Server.
--tomaszkenig.pl CREATE TABLE MY_TABLE (COLUMN_1 BIGINT identity(1,1), COLUMN_2 NVARCHAR(255)); go INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 1'); INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 2'); INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 3'); go select * from MY_TABLE;
Po nadaniu kolumnie atrybutu IDENTITY, kolumna automatycznie nie może przyjąć wartości NULL.
3. Autonumeracja IDENTITY, a klucz główny PRIMARY KEY.
W jaki sposób połączyć autonumerację z kluczem głównym? Najłatwiej to zrobić podczas tworzenia nowej tabeli. Podczas opisywania nazw column wstaw Constraint PRIMARY KEY jak na przykładzie poniżej.
--tomaszkenig.pl CREATE TABLE MY_TABLE (COLUMN_1 BIGINT constraint prm_ky PRIMARY KEY IDENTITY(1,1), COLUMN_2 NVARCHAR(255)); go INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 1'); INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 2'); INSERT INTO MY_TABLE (COLUMN_2) VALUES ('sql server tutorial 3'); go select * from MY_TABLE;