We wczorajszym poście na blogu pisałem o stworzeniu tabeli z wartością IDENTITY. Ale nową funkcją Oracle 12c, którą bardziej lubię, jest umożliwienie sekwencji jako generatora liczb dla domyślnej wartości kolumny. Aby zobaczyć, co mam na myśli, spójrz na ten przykład:
SQL> create sequence test_seq; Sequence created. SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20)); Table created.
Jak widać, kolumna ID mojej tabeli testowej zawiera klauzulę DEFAULT, która używa NEXTVAL utworzonej przeze mnie sekwencji. Teraz wstawmy trochę danych do tabeli.
SQL> insert into test_tab (val) values ('first row'); 1 row created. SQL> insert into test_tab (val) values ('second row'); 1 row created. SQL> commit; Commit complete. SQL> select * from test_tab; ID VAL ---------- -------------------- 1 first row 2 second row
Jak widać, do wypełnienia wartości użyto sekwencji Oracle. Na pierwszy rzut oka ułatwiłoby to życie modelarzowi danych, ponieważ nie musiałby iść tradycyjną drogą kodowania wyzwalacza w celu wygenerowania NEXTVAL i przypisania tej wartości do kolumny. Jednak to automatyczne wypełnianie wartości kolumny sekwencją działa tylko wtedy, gdy nie określisz wartości, jeśli pozwolisz jej domyślnie. Jeśli jawnie określisz wartość, ta metoda nie użyje sekwencji. Wyzwalacz, jeśli został prawidłowo zakodowany, wymusiłby użycie następnej wartości sekwencji dla kolumny.