No Oracle
Datatbase 12c, foi introduzida uma nova funcionalidade, as Session level
sequences.
Session level
sequences são utilizadas para produzir valores únicos dentro de uma sessão. Assim
que a sessão termina, a sequence é reinicializada.
Elas são muito utilizadas para gerar valores de Primary Keys em Global
Temporary Tables.
START WITH 1
INCREMENT BY 1
SESSION
/
Sequence created.
CREATE GLOBAL TEMPORARY TABLE tabela_teste (
id NUMBER DEFAULT sequence_teste.nextval NOT NULL
,first_name VARCHAR2(20)
,last_name VARCHAR2(25)
)
ON COMMIT PRESERVE ROWS
/
Table created.
INSERT INTO tabela_teste (first_name, last_name)
SELECT first_name, last_name
FROM hr.employees
WHERE rownum < 6
/
5 rows created.
SELECT *
FROM tabela_teste
/
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- -------------------- -------------------------
1 Joao Silva
2 Andre Silva
3 Pedro Silva
4 Mario Silva
5 Fulano Silva
Em outra sessão:
SELECT first_name, last_name
FROM hr.employees
WHERE rownum < 10
/
9 rows created.
SELECT *
FROM tabela_teste
/
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- -------------------- -------------------------
1 Joao Silva
2 Andre Silva
3 Pedro Silva
4 Mario Silva
5 Fulano Silva
6 Ciclano Silva
7 Beltrano Silva
8 Jose Silva
9 Alex Silva
Os parâmetros CACHE, NOCACHE, ORDER ou NOORDER são ignorados pelas
SESSION level sequences.
Pode-se alterar sequences existentes:
SQL> ALTER SEQUENCE … SESSION;
Session level sequences devem ser criadas em um banco read/write e,
podem ser acessadas em um banco read/write ou read/only (mesmo em um banco
regular, aberto temporariamente como read/only).
Referências:
Abraço
Alex Zaballa
0 comentários:
Postar um comentário