O Derby suporta a fun????o IDENTITY_VAL_LOCAL.
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.
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