从 Oracle 12c 开始,我们可以使用 IDENTITY 字段。
有没有办法检索最后插入的身份(即 select @@identity
或 select LAST_INSERTED_ID()
等等)?
最佳答案
嗯。 Oracle 对 12c 中的 IDENTITY 功能使用序列和默认值。因此,您需要了解问题的序列。
首先创建一个测试身份表。
CREATE TABLE IDENTITY_TEST_TABLE
(
ID NUMBER GENERATED ALWAYS AS IDENTITY
, NAME VARCHAR2(30 BYTE)
);
首先,让我们找到使用此标识列创建的序列名称。此序列名称是表中的默认值。
Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
where TABLE_NAME = 'IDENTITY_TEST_TABLE';
对我来说,这个值是“ISEQ$$_193606”
插入一些值。
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');
然后插入值并找到身份。
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
SELECT "ISEQ$$_193606".currval from dual;
你应该看到你的身份值(value)。如果你想在一个块中使用
declare
s2 number;
begin
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
dbms_output.put_line(s2);
end;
最后一个 ID 是我的身份列名称。
关于sql - 检索 Oracle 最后插入的 IDENTITY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34811283/