Oracle: Identity column használata

Adatbázisokkal kapcsolatos cikkek / Oracle (20 katt)

Ha valaki használt az Oracle-n kívül más adatbázisrendszereket is, akkor ismerős lehet számára az auto increment lehetősége, amellyel egy adott tábla egy oszlopát lehet automatikusan feltölteni egy folyamatosan növekvő értékkel. Ezt például elsődleges kulcsok, azonosítók képzésére lehet használni.

Az Oracle régebbi verzióiban nem volt ilyen egyszerű lehetőség erre a célra, ehelyett kézzel létrehozott sequence-eket, triggereket stb. kellett használni. Az Oracle 12c verziójában már van egy kényelmesebben használható módszer, az Identity Column.

Első példa:

-- test_table1

drop table test_table1;

create table test_table1
(test_id integer generated always as identity (nomaxvalue nocache order),
test_text varchar2(80) not null,

primary key (test_id));


insert into test_table1 (test_text) values ('Row 01');
insert into test_table1 values (null, 'Row 02'); -- Error

commit;


select *
from test_table1;



Ha a generated always as identity lehetőséget választjuk, akkor a példában megadott második insert utasítás nem fog lefutni.

A második példában a generated by default on null as identity lehetőséget választjuk, így már lefut a második insert utasítás is:

-- test_table2

drop table test_table2;

create table test_table2
(test_id integer generated by default on null as identity (nomaxvalue nocache order),
test_text varchar2(80) not null,

primary key (test_id));


insert into test_table2 (test_text) values ('Row 01');
insert into test_table2 values (null, 'Row 02'); -- OK

commit;


select *
from test_table2;



Bővebb infó:

https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1

https://oracle-base.com/articles/12c/default-values-for-table-columns-enhancements-12cr1

Előző oldal Kapitány