Create Sequence-Oracle Database 12c

Database version : from Oracle Database 12cR1
Crea sequenza con sessione o opzione globale

Quando viene generato un numero di sequenza, la sequenza viene incrementata, indipendentemente dal commit o dal rollback della transazione.

L’opzione SESSIONE offre l’opportunità di creare una sequenza che può essere utilizzata in associazione con la tabella temporanea globale, quindi la sua visibilità è solo per la sessione.

Le seguenti opzioni CACHE, NOCACHE, ORDER o NOORDER vengono ignorate quando viene dichiarata SESSION.

1) statement
SQL> CREATE GLOBAL TEMPORARY TABLE glb_tmp_table (a number);
Table created.
SQL> CREATE SEQUENCE sq_sess SESSION;
Sequence created.
2) esecuzione script
SQL> INSERT INTO glb_tmp_table VALUES (sq_sess.NEXTVAL);
1 row created.
SQL> INSERT INTO glb_tmp_table VALUES (sq_sess.NEXTVAL);
1 row created.
SQL> SELECT * FROM glb_tmp_table;
A
———-
1
2
3) Run the script above in other session. It shows the sequence start from first number:
SQL> INSERT INTO glb_tmp_table VALUES (sq_sess.NEXTVAL);
1 row created.
SQL> INSERT INTO glb_tmp_table VALUES (sq_sess.NEXTVAL);
1 row created.
SQL> SELECT * FROM glb_tmp_table;
A
———-
1
2
Specify GLOBAL to create a global, or regular, sequence. This is the default.
Here we are going to alter existing sequence to be a regular (“global”) sequence;
alter sequence sq_sess GLOBAL;
or, as usual create the new one:
CREATE SEQUENCE number_seq
START WITH 10
INCREMENT BY 1
NOCACHE
NOCYCLE
GLOBAL ;
Excursus:
Area Etica web site
http://www.areaetica.com/global-temporary-table
Oracle web site
https://docs.oracle.com/database/121/SQLRF/statements_6017.htm#SQLRF01314

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *