IDENTITY_VAL_LOCAL

O Derby 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 Derby. 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.

Exemplos:

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