BD-1st-2.4-lab8.tresc-1.1-Slajd5

Z Studia Informatyczne
Wersja z dnia 09:17, 9 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Sekwencje – cd.

Sekwencje – cd.


Na poprzednim slajdzie omówiliśmy sposób tworzenia, modyfikacji i usuwania sekwencji. Obecnie pokażemy państwu w jaki sposób można odczytać wartość sekwencji. W przeciwieństwie do poleceń służących do tworzenia i usuwania sekwencji, które są prawie identyczne w wielu SZBD, sposób odczytu wartości z sekwencji już nie jest. Na slajdzie przedstawiono składnię charakterystyczną dla Oracle. W poniższych opisach przedstawimy również składnię dla dwóch innych SZBD.

Zacznijmy od rozważenia przykładu (1). Jest on przypomnieniem polecenia tworzącego przykładową sekwencję SEQ_ZESP. Przykład (2) pokazuje sposób użycia sekwencji do wygenerowania klucza podstawowego dla nowo tworzonej krotki. Jak łatwo zauważyć, kolejną wartość z sekwencji odczytuje się podając najpierw nazwę sekwencji, a potem kropkę i słowo NEXTVAL. Prócz NEXTVAL, przy odwoływaniu się do sekwencji można użyć słowa CURRVAL, które powoduje odczytanie aktualnej wartości licznika sekwencji. Przy korzystaniu z CURRVAL należy bardzo uważać, gdyż wielokrotne odczytanie aktualnej wartości licznika sekwencji nie musi zawsze zwrócić tą samą wartość (wartość licznika może zostać zmieniona przez innego, pracującego równocześnie użytkownika). Przykład (3) pokazuje, że ze sekwencji można korzystać nie tylko w poleceniu INSERT. Można z nich korzystać również w innych poleceniach języka SQL, w tym np. UPDATE i SELECT. Polecenie UPDATE na przykładzie (3) zmienia wartość klucza zespołu o nazwie „SYSTEMY BAZ DANYCH”.

W DB2 kolejną wartość z sekwencji o nazwie SEQ_ZESP (odpowiednik seq_zesp.NEXTVAL) odczytuje się za pomocą wyrażenia: „NEXTVAL FOR seq_zesp”, a aktualną wartość sekwencji (odpowiednik seq_zesp.CURRVAL) odczytuje się za pomocą wyrażenia: „PREVVAL FOR seq_zesp”. W PostgreSQL odpowiednikiem seq_zesp.NEXTVAL jest: „nextval(‘seq_zesp')”.


<< Poprzedni slajd | Spis treści | Następny slajd >>