O suporta a função
IDENTITY_VAL_LOCAL.
Sintaxe:
IDENTITY_VAL_LOCAL ( )
A função IDENTITY_VAL_LOCAL é uma função não determinística, que retorna o
valor atribuído mais recentemente a uma coluna identidade para a conexão,
onde a atribuição ocorreu como resultado de uma instrução INSERT de um única
linha utilizando uma cláusula VALUES.
A função IDENTITY_VAL_LOCAL não possui parâmetros de entrada.
O resultado é um DECIMAL (31,0), independentemente do tipo de dado real da
coluna identidade correspondente.
O valor retornado pela função IDENTITY_VAL_LOCAL, para a conexão, é o valor
atribuído à coluna identidade da tabela identificada na instrução INSERT de uma
única linha mais recente.
A instrução INSERT deve conter a cláusula VALUES na tabela que contém a
coluna de identidade.
O valor atribuído é um valor identidade gerado pelo
.
A função retorna o valor nulo quando não tiver sido emitida uma instrução
INSERT de uma única linha com a cláusula VALUES para uma tabela contendo
coluna identidade.
O resultado da função não é afetado por:
- Uma instrução INSERT de uma única linha com a cláusula VALUES para uma
tabela sem coluna identidade
- Uma instrução INSERT de várias linhas com a cláusula VALUES
- Uma instrução INSERT com um FULLSELECT
Se a tabela com a coluna identidade possuir um gatilho para INSERT
definido, que insere em outra tabela com outra coluna identidade, então a
função IDENTITY_VAL_LOCAL() retornará o valor gerado para a tabela da instrução,
e não para a tabela modificada pelo gatilho.
ij> CREATE TABLE T1(C1 INT GENERATED ALWAYS AS IDENTITY, C2 INT);
0 rows inserted/updated/deleted
ij> INSERT INTO T1(C2) VALUES (8);
1 row inserted/updated/deleted
ij> VALUES IDENTITY_VAL_LOCAL();
1
-------------------------------
1
1 row selected
ij> SELECT IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 FROM T1;
1 |2
-------------------------------------------------------------------
2 |0
1 row selected
ij> INSERT INTO T1(C2) VALUES (IDENTITY_VAL_LOCAL());
1 row inserted/updated/deleted
ij> SELECT * FROM T1;
C1 |C2
-------------------------------
1 |8
2 |1
2 rows selected
ij> VALUES IDENTITY_VAL_LOCAL();
1
-------------------------------
2
1 row selected
ij> INSERT INTO T1(C2) VALUES (8), (9);
2 rows inserted/updated/deleted
ij> -- inserção de vários valores;
-- valor retornado pela função não deve mudar
VALUES IDENTITY_VAL_LOCAL();
1
-------------------------------
2
1 row selected
ij> SELECT * FROM T1;
C1 |C2
-------------------------------
1 |8
2 |1
3 |8
4 |9
4 rows selected
ij> INSERT INTO T1(C2) SELECT C1 FROM T1;
4 rows inserted/updated/deleted
ij> -- inserção som sub-seleção;
-- valor retornado pela função não deve mudar
VALUES IDENTITY_VAL_LOCAL();
1
-------------------------------
2
1 row selected
ij> SELECT * FROM T1;
C1 |C2
-------------------------------
1 |8
2 |1
3 |8
4 |9
5 |1
6 |2
7 |3
8 |4
8 rows selected