sql >> Databáze >  >> RDS >> Oracle

12c Automatické vyplnění sloupce se sekvenční hodnotou

Ve včerejším blogovém příspěvku jsem psal o vytvoření tabulky s hodnotou IDENTITY. Ale nová funkce Oracle 12c, která se mi líbí víc, umožňuje, aby sekvence byla generátorem čísel pro výchozí hodnotu sloupce. Chcete-li zjistit, co tím myslím, podívejte se na tento příklad:

SQL> create sequence test_seq;
Sequence created.
SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
Table created.

Jak můžete vidět, sloupec ID mé testovací tabulky má klauzuli DEFAULT, která používá NEXTVAL sekvence, kterou jsem vytvořil. Nyní do tabulky vložíme nějaká data.

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 vidíte, k naplnění hodnot byla použita sekvence Oracle. Na první pohled by to usnadnilo život datovému modeláři, protože by nebylo nutné jít tradiční cestou kódování spouštěče pro generování NEXTVAL a přiřazení této hodnoty sloupci. Toto automatické vyplnění hodnoty sloupce sekvencí však funguje pouze tehdy, pokud nezadáte hodnotu, pokud ji necháte výchozí. Pokud explicitně uvedete hodnotu, tato metoda nebude používat sekvenci. Spouštěč, pokud je správně kódován, by si vynutil použití další hodnoty sekvence pro sloupec.


  1. Smazat rodiče, pokud na něj neodkazuje žádný jiný potomek

  2. Povolte Pythonu připojení k MySQL prostřednictvím SSH tunelování

  3. Jaké jsou výhody databáze prodejů?

  4. Jak FIELD() funguje v MariaDB