Autonumeracja – Sekwencje w MsSQL

Tomasz Kenig/ / Kurs SQL Server/ 0 komentarzy

1. Autonumeracja w SQL Server za pomocą Sekwencji

Do czego służą sekwencje w SQL Server? Sekwencje w SQL Server służą do numeracji wartości w kolumnie. Wyobraź sobie prostą sytuację. Tworzysz nową tabelę. Podczas insertu każdego nowego rekordu w jednej z kolumn wstawia się kolejny numer dla każdego nowego rekordu np 1,2,3,4 (…) lub też 1, 11, 21(…). Możesz też wstawić liczby w kolejności odwrotnej np: 999, 998, 997 (…). Poniżej szczegółowy schemat tworzenia sekwencji w SQL Server.

Jakie atrybuty możemy przypisać do sekwencji?

  • built_in_integer_type – określenie typu danych. Musisz wybrać spośród typów rzeczywistych (integer). Jeśli nie ustawisz nic, sekwencja przyjmie typ danych bigint i tak powienieneś na początku postępować. Możesz też użyć zdefiniowanego przez Ciebie typu danych.
  • START WITH – określenie wartości początkowej sekwencji. Zazwyczaj będzie to u nas liczba 1.
  • INCREMENT BY – określasz, co ile wartości sekwencja będzie się zwiększać. Np jeśli ustawisz 10, sekwencja będzie przeskakiwać właśnie o tyle wartości. Jeśli wprowadzisz tutaj liczbę ujemną, sekwencja będzie podawać coraz to niższe liczby np 999, 998, 997 (…).
  • MINVALUE – minimalna liczba generowana przez sekwencję.
  • MAXVALUE – wartość maksymalna liczb generowanej przez sekwencję. Jeśli nie określisz tej wartości, SQL Server przyjmie za maksimum granicę typu danych.
  • CYCLE / NO CYCLE – określasz, czy po uzyskaniu wartości maksymalnej sekwencja ma się tworzyć od nowa. Pamiętaj, że jeśli wartości w sekwencji się skończą, a sekwencja będzie miała wartość NO CYCLE – SQL Server zwróci błąd przy pobieraniu wartości.
  • CACHE – określasz liczbę wartości przechowywanych przez sekwencję do użycia “na szybko”. Jeśli wprowadziśz tu np liczbę 100, sekwencja będzie już przechowywać 100 wartości, których nie musi tworzyć na bieżąco.

2. Przykład sekwencji w SQL Server

Stwórzmy prostą sekwencję. Wartość początkowa to liczba 100000. Sekwencja powinna przechowywać 50 wartości w cach’u. Za każdym wywołaniem wartość generowana powinna wzrastać o 10. Powinna także powtarzać się w cyklu po osiągnięciu wartości maksymalnej równej 1000000.

W jaki sposób wywołać wartości z sekwencji i wstawić je np do tabeli? Do tego celu możemy użyć prostego skryptu. Pierwszy skrypt podaje bieżącą wartość w sekwencji. Drugi skrypt zwraca wartość kolejną.

Jeśli chcemy, by dana kolumna w tabeli była automatycznie uzupełniana wartością z sekwencji podczas każdego insertu, powinniśmy ustawić wartość DEFAULT na kolumnie. Poniżej przykład tworzenia takiej tabeli i insertu wartości utworzonej z sekwencji:

Autonumeracja - Sekwencje w SQL Server

Autonumeracja – Sekwencje w SQL Server

3. Sekwencje w kolumnie z kluczem głównym PRIMARY KEY

Jeśli chcesz, by sekwencja była wprowadzana do kolumny określonej jako Klucz Główny tabeli, jedyne, co powinieneś zrobić to dodać do tabeli Constraint PRIMARY KEY. Przykład tworzenia takiej tabeli dla wcześniej utworzonej sekwencji poniżej.

Artykuł stanowi częśc kursu SQL Server. Jeśli masz jakieś pytania, możesz je zamieścić na forum bez logowania lub zostawić komentarz. Artykuł zamieszczam także w wersji angielskiej na tej stronie: SQL Server CREATE SEQUENCE.

Zostaw Komentarz

Twój adres email nie zostanie opublikowany.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">