Să presupunem că avem o bază de date și dorim ca fiecare intrare să fie identificată printr-un număr unic. Înaintea versiunii de bază de date Oracle 11g acest lucru era posibil doar cu ajutorul unui SELECT apelat într-un trigger. Această modalitate de incrementare necesită un swich de context de la motorul PL/SQL la motorul SQL.

create table test_table
(
id number primary key
);

create sequence test_seq start with 1 increment by 1 nocycle;

create or replace trigger test_trg
before insert on test_table
for each row
begin
select test_seq.nextval into :new.id
from dual;
end;

Începând cu versiunea Oracle 11g putem atribui direct o valoare secvenței unei variabile PL/SQL în trigger:

create table test_table
(
id number primary key
);

create sequence test_seq start with 1 increment by 1 nocycle;

create or replace trigger test_trg
before insert on test_tab
for each row
begin
:new.id := test_seq.nextval;
end;

În Oracle 12c putem atribui direct secvența NEXTVAL ca o valoare implicită pentru o coloană, nu mai este nevoie să se creeze un trigger pentru a popula coloana cu următoarea valoare a secvenței, trebuie doar să-l declarăm în definiția tabelei:

create sequence test_seq start with 1 increment by 1 nocycle;

create table test_table
(
id number default test_seq.nextval primary key
);

Lasă un răspuns

Completează mai jos detaliile cerute sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

Enmotech Blog

Specialized in Oracle Cloud Database ( DBaaS )

Mathijs Bruggink

Tips Tricks and Blogs on Oracle

Oracle Romania

Simplify IT

Programat in Romania

Blogul industriei de software din Romania. Comunitate dezvoltatori

Dan Bârsan

The miracle is not that we do this work, but that we are happy to do it. I'm writing in Romanian and English

Romanian Oracle User Group

Focusing On Oracle Database Administration

Big Lazy SysAdmin

Adapt. Enjoy. Survive.

Talip Hakan Ozturk's ORACLE BLOG

The secret of success is at your fingertips!...

Pickleball spielen

002 - License to dink

Enmotech Blog

Specialized in Oracle Cloud Database ( DBaaS )

Mathijs Bruggink

Tips Tricks and Blogs on Oracle

Oracle Romania

Simplify IT

Programat in Romania

Blogul industriei de software din Romania. Comunitate dezvoltatori

Dan Bârsan

The miracle is not that we do this work, but that we are happy to do it. I'm writing in Romanian and English

Romanian Oracle User Group

Focusing On Oracle Database Administration

Big Lazy SysAdmin

Adapt. Enjoy. Survive.

Talip Hakan Ozturk's ORACLE BLOG

The secret of success is at your fingertips!...

Pickleball spielen

002 - License to dink

%d blogeri au apreciat: