bub*_*ubi 10 sql oracle primary-key
从Oracle 12c开始,我们可以使用IDENTITY字段.
有没有一种方法来检索最后插入的标识(即select @@identity
或select LAST_INSERTED_ID()
等等)?
Ati*_*gur 13
好.Oracle在12c中使用IDENTITY功能的序列和默认值.因此,您需要了解问题的序列.
首先创建一个测试身份表.
CREATE TABLE IDENTITY_TEST_TABLE
(
ID NUMBER GENERATED ALWAYS AS IDENTITY
, NAME VARCHAR2(30 BYTE)
);
Run Code Online (Sandbox Code Playgroud)
首先,让我们找到使用此标识列创建的序列名称.此序列名称是表中的默认值.
Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS
where TABLE_NAME = 'IDENTITY_TEST_TABLE';
Run Code Online (Sandbox Code Playgroud)
对我来说这个值是"ISEQ $$ _ 193606"
插入一些值.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('ayd?n');
Run Code Online (Sandbox Code Playgroud)
然后插入值并找到身份.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla');
SELECT "ISEQ$$_193606".currval from dual;
Run Code Online (Sandbox Code Playgroud)
你应该看到你的身份价值.如果你想在一个块中使用
declare
s2 number;
begin
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2;
dbms_output.put_line(s2);
end;
Run Code Online (Sandbox Code Playgroud)
最后一个ID是我的标识列名称.
归档时间: |
|
查看次数: |
29664 次 |
最近记录: |