sql >> Base de Datos >  >> RDS >> Oracle

Recuperar la última IDENTIDAD insertada de Oracle

Bueno. Oracle usa secuencias y valores predeterminados para la funcionalidad de IDENTIDAD en 12c. Por lo tanto, necesita conocer las secuencias para su pregunta.

Primero cree una tabla de identidad de prueba.

CREATE TABLE IDENTITY_TEST_TABLE
(
  ID NUMBER GENERATED ALWAYS AS IDENTITY 
, NAME VARCHAR2(30 BYTE) 
);

Primero, busquemos el nombre de la secuencia que se crea con esta columna de identidad. Este nombre de secuencia es un valor predeterminado en su tabla.

Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
where TABLE_NAME = 'IDENTITY_TEST_TABLE';

para mí este valor es "ISEQ$$_193606"

inserte algunos valores.

INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');

luego inserte el valor y encuentre la identidad.

INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
 SELECT "ISEQ$$_193606".currval from dual; 

deberías ver tu valor de identidad. Si quieres hacerlo en un bloque usa

declare
   s2 number;
 begin
   INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
   dbms_output.put_line(s2);
 end;

El último ID es el nombre de mi columna de identidad.