Във вчерашната публикация в блога написах за създаване на таблица със стойност IDENTITY. Но новата функция на Oracle 12c, която ми харесва повече, позволява на последователност да бъде генератор на числа за стойността по подразбиране на колона. За да разберете какво имам предвид, вижте този пример:
SQL> create sequence test_seq; Sequence created. SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20)); Table created.
Както можете да видите, колоната ID на моята тестова таблица има клауза DEFAULT, която използва NEXTVAL на последователността, която създадох. Сега нека вмъкнем някои данни в таблицата.
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
Както можете да видите, последователността на Oracle е била използвана за попълване на стойностите. На пръв поглед това би улеснило живота на модела на данни, тъй като не би трябвало да се върви по традиционния път на кодиране на тригер за генериране на NEXTVAL и присвояване на тази стойност на колоната. Въпреки това, това автоматично попълване на стойността на колоната с последователността работи само ако не посочите стойност, ако я оставите по подразбиране. Ако изрично посочите стойността, този метод няма да използва последователността. Задействането, ако е кодирано правилно, би принудило използването на следващата стойност на последователността за колоната.