Dobrze. Oracle używa sekwencji i wartości domyślnych dla funkcji IDENTITY w 12c. Dlatego musisz znać sekwencje dla swojego pytania.
Najpierw utwórz testową tabelę tożsamości.
CREATE TABLE IDENTITY_TEST_TABLE
(
ID NUMBER GENERATED ALWAYS AS IDENTITY
, NAME VARCHAR2(30 BYTE)
);
Najpierw znajdźmy nazwę sekwencji, która jest tworzona z tą kolumną tożsamości. Ta nazwa sekwencji jest wartością domyślną w Twojej tabeli.
Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
where TABLE_NAME = 'IDENTITY_TEST_TABLE';
dla mnie ta wartość to „ISEQ$$_193606”
wstaw kilka wartości.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');
następnie wstaw wartość i znajdź tożsamość.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
SELECT "ISEQ$$_193606".currval from dual;
powinieneś zobaczyć swoją wartość tożsamości. Jeśli chcesz zrobić w jednym bloku, użyj
declare
s2 number;
begin
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
dbms_output.put_line(s2);
end;
Ostatni identyfikator to nazwa mojej kolumny tożsamości.