Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Recuperar a última IDENTIDADE inserida do Oracle


Nós vamos. O Oracle usa sequências e valores padrão para a funcionalidade IDENTITY em 12c. Portanto, você precisa saber sobre sequências para sua pergunta.

Primeiro, crie uma tabela de identidade de teste.
CREATE TABLE IDENTITY_TEST_TABLE
(
  ID NUMBER GENERATED ALWAYS AS IDENTITY 
, NAME VARCHAR2(30 BYTE) 
);

Primeiro, vamos encontrar o nome da sequência criada com esta coluna de identidade. Esse nome de sequência é um valor padrão em sua tabela.
Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
where TABLE_NAME = 'IDENTITY_TEST_TABLE';

para mim esse valor é "ISEQ$$_193606"

insira alguns valores.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');

em seguida, insira o valor e encontre a identidade.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
 SELECT "ISEQ$$_193606".currval from dual; 

você deve ver seu valor de identidade. Se você quiser fazer em um bloco use
declare
   s2 number;
 begin
   INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
   dbms_output.put_line(s2);
 end;

O último ID é o nome da minha coluna de identidade.