sql >> Databasteknik >  >> RDS >> Oracle

12c Autofyller kolumn med sekvensvärde

I gårdagens blogginlägg skrev jag om att skapa en tabell med ett IDENTITY-värde. Men den nya funktionen i Oracle 12c som jag gillar bättre är att tillåta en sekvens att vara nummergenerator för standardvärdet för en kolumn. För att se vad jag menar, titta på det här exemplet:

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

Som du kan se har ID-kolumnen i min testtabell en DEFAULT-sats som använder NEXTVAL för sekvensen jag skapade. Låt oss nu infoga lite data i tabellen.

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

Som du kan se användes Oracle-sekvensen för att fylla i värdena. Vid första anblicken skulle detta göra livet lättare för datamodelleraren eftersom man inte skulle behöva gå den traditionella vägen att koda en trigger för att generera NEXTVAL och tilldela detta värde till kolumnen. Denna autopopulering av kolumnvärdet med sekvensen fungerar dock bara om du inte anger ett värde, om du låter det vara standard. Om du uttryckligen anger värdet kommer denna metod inte att använda sekvensen. En utlösare, om den är korrekt kodad, skulle tvinga fram användningen av sekvensens nästa värde för kolumnen.


  1. Oracle10g SQL pivot

  2. MySQL ATAN2() Funktion – Returnera bågtangenten av 2 värden

  3. C# - Hur man får oracle long råtypsvärde

  4. Dela värdet från ett fält till två