SAP Samouczek HANA: Utwórz sekwencję
Co to jest sekwencja?
Sekwencja to obiekt bazy danych, który automatycznie generuje zwiększoną listę wartości numerycznych zgodnie z regułą określoną w specyfikacji sekwencji.
Przykładowo, aby automatycznie wstawić numer pracownika w kolumnie (EMPLOYEE_NO) tabeli, po wstawieniu nowego rekordu do tabeli stosujemy sekwencję.
Wartości sekwencji są generowane w kolejności rosnącej lub malejącej.
Sekwencje nie są powiązane z tabelami; są one używane przez aplikację. Kolejno występują dwie wartości –
- CURRVAL – Podaj aktualną wartość sekwencji.
- NEXTVAL – Podaj następną wartość sekwencji.
SKŁADNIA
CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]
ELEMENTY SKŁADNIOWE
| ELEMENTY | OPIS |
|---|---|
| To nazwa sekwencji. | |
| [ ] | Określa jeden lub więcej parametrów sekwencji. |
| ZACZĄĆ OD | Opisuje wartość sekwencji początkowej. |
| PRZYROST O | Określa wartość, która ma być zwiększana od ostatniej przypisanej wartości za każdym razem, gdy generowana jest nowa wartość sekwencji. Wartość domyślna to 1. |
| MAKSYMALNA WARTOŚĆ | Określa maksymalną wartość, jaką może wygenerować sekwencja. może wynosić od -4611686018427387903 do 4611686018427387902. |
| BRAK MAKSYMALNEJ WARTOŚCI | Jeśli określono wartość NO MAXVALUE, dla sekwencji rosnącej wartość maksymalna będzie wynosić 4611686018427387903, a wartość minimalna dla sekwencji malejącej będzie wynosić -1. |
| WARTOŚĆ MIN / BRAK WARTOŚCI MINIMALNEJ | Określa minimalną wartość, jaką może wygenerować sekwencja. może wynosić od -4611686018427387904 do 4611686018427387902. Gdy używana jest wartość NO MINVALUE, minimalna wartość dla sekwencji rosnącej wynosi 1 |
| CYKL | Dyrektywa CYCLE określa, że numer kolejny zostanie uruchomiony ponownie po osiągnięciu wartości maksymalnej lub minimalnej. |
| BEZ CYKLU | Opcja domyślna. Dyrektywa NO CYCLE określa, że numer kolejny nie będzie uruchamiany ponownie po osiągnięciu wartości maksymalnej lub minimalnej. |
| PAMIĘĆ PODRĘCZNA / | Rozmiar pamięci podręcznej określa, jaki zakres numerów sekwencyjnych będzie buforowany w węźle. musi być liczbą całkowitą bez znaku. |
| BEZ Pamięci podręcznej | Domyślna opcja. Dyrektywa NO CACHE określa, że numer kolejny nie będzie buforowany w węźle. |
| ZRESETOWANY PRZEZ | Określa, że podczas ponownego uruchamiania bazy danych baza danych automatycznie wykonuje i wartość sekwencji jest ponownie uruchamiana ze zwróconą wartością. |
Przykład -
Stworzymy sekwencję o nazwie DHK_SCHEMA.EMP_NO, która będzie tworzyła wartość sekwencji zwiększaną o +1 za każdym razem, gdy sekwencja zostanie użyta.
Skrypt sekwencji –
CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1.
Tutaj użyjemy obiektu „sekwencja” w poniższym przykładzie, aby zwiększyć wartość pracownika nr o +1 za każdym razem, gdy wykonywane jest zapytanie wybierające. W zapytaniu „nextval” może zostać użyte do wygenerowania numeru seryjnego lub wymagania tego samego typu.
Użycie sekwencji –
SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;
WYJŚCIE – 100,101,102………Tak więc przy każdym wykonaniu powyższego zapytania wybierz.
