Sunteți pe pagina 1din 7

BD Proiect

Autoincrement
Următorul exemplu va funcționa indiferent de versiunea de Oracle folosită (de obicei Oracle 11g Express
Edition - recomandat pentru instalarea pe laptop, sau Oracle 12c Enterprise - disponibil în laborator sau din
rețeaua RoEduNet)

Se crează în Data Modeler o entitate x cu două atribute: id și denumire (se observă în figura de mai jos, în
dreptul atributului „id“ o * și un # - ceea ce denotă faptul că atributul „id“ este cheie primară, iar implicit nu permite
valori nule)

Autoincrement-ul se poate implementa de abia în Modelul fizic/relațional.

Se dă dublu-click pe coloana „id“ (pe care se va construi autoincrement-ul):

1/7
BD Proiect
Se navighează în stânga, la „General“ și se bifează check-box-ul „Auto Increment“.

La generarea codului, se observă că se crează în mod automat o secvență și un trigger:


CREATE TABLE x (
id NUMBER(2) NOT NULL,
denumire VARCHAR2(10)
);

ALTER TABLE x ADD CONSTRAINT x_pk PRIMARY KEY ( id );

CREATE SEQUENCE x_id_seq START WITH 1 NOCACHE ORDER;

CREATE OR REPLACE TRIGGER x_id_trg BEFORE


INSERT ON x
FOR EACH ROW
WHEN ( new.id IS NULL )
BEGIN
:new.id := x_id_seq.nextval;
END;
/

2/7
BD Proiect

Cum se testează autoincrement-ul:


INSERT INTO x (denumire) VALUES ('a');
INSERT INTO x (denumire) VALUES ('b');
INSERT INTO x (denumire) VALUES ('c');
INSERT INTO x (denumire) VALUES ('d');

SELECT * FROM x;

ID DENUMIRE
---------- ----------
1a
2b
3c
4d

3/7
BD Proiect
Următorul exemplu va funcționa doar începând cu versiunea Oracle 12c Release 1 - disponibil în laborator
sau din rețeaua RoEduNet, având la bază IDENTITY, pentru a permite migrarea mai ușoară în și din alte SGBD-
uri. ( https://docs.oracle.com/database/121/DRDAA/migr_tools_feat.htm#DRDAA109 )
Se crează în Data Modeler aceeași entitate x cu două atribute: id și denumire, ca în primul exemplu, numai
că în acest exemplu, se bifează și „Identity Column“ după „Auto Increment“.

Pasul 3

Pasul 1 Pasul 2

Pentru a nu mai genera trigger (ca în primul exemplu), trebuie navigat în stânga la „Auto Increment“ și de-
bifat „Generate Trigger“, ca în exemplul din figura următoare:

4/7
BD Proiect

Tot în această fereastră puteți schimba valorile de start, pasul, valoarea minimă și maximă care le vor lua
valorile din coloana „id“.
Apoi se navighează spre Modelul fizic: Click dreapta pe Physical Models [], new:

5/7
BD Proiect
La Physical Models [], se deschide tree-ul Oracle Database 12c/12cR2, apoi se deschide tree-ul Tables și
se dă click dreapta pe coloana „id“, apoi Properties , se trece în tab-ul Auto increment și se alege din drop down
list-ul „Auto increment DDL“: „IDENTITY clause“

6/7
BD Proiect
La generarea codului, nu uitați să alegeți Oracle 12c/12cR2 (se observă că nu se mai crează în mod auto-
mat secvență și trigger):

CREATE TABLE x (
id NUMBER(2) GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 NOCACHE ORDER )
NOT NULL,
denumire VARCHAR2(10)
);

ALTER TABLE x ADD CONSTRAINT x_pk PRIMARY KEY ( id );

Cum se testează autoincrement-ul:

INSERT INTO x (denumire) VALUES ('a');


INSERT INTO x (denumire) VALUES ('b');
INSERT INTO x (denumire) VALUES ('c');
INSERT INTO x (denumire) VALUES ('d');

SELECT * FROM x;

ID DENUMIRE
---------- ----------
1a
2b
3c
4d

Pentru sugestii de îmbunătățire a acestui tutorial, vă rog să trimiteți e-mail la cmironea@tuiasi.ro


7/7

S-ar putea să vă placă și