Oracle
 sql >> Base de données >  >> RDS >> Oracle

Récupérer la dernière IDENTITÉ insérée dans Oracle

Hé bien. Oracle utilise des séquences et des valeurs par défaut pour la fonctionnalité IDENTITY dans 12c. Par conséquent, vous devez connaître les séquences de votre question.

Créez d'abord une table d'identité de test.

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

Tout d'abord, trouvons votre nom de séquence qui est créé avec cette colonne d'identité. Ce nom de séquence est une valeur par défaut dans votre table.

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

pour moi cette valeur est "ISEQ$$_193606"

insérer des valeurs.

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

puis insérez la valeur et trouvez l'identité.

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

vous devriez voir votre valeur d'identité. Si vous voulez faire en un seul bloc, utilisez

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

Le dernier ID est le nom de ma colonne d'identité.