Oracle如何获取具有identity列的插入行的id?

5

目前我有一个具有以下结构的表:

CREATE TABLE "DUMMY_SCHEMA"."NAMES"
(
  "ID" NUMBER(10,0) GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 CACHE 20) NOT NULL 
, "NAME" NVARCHAR2(1024) NOT NULL 
, CONSTRAINT "NAMES_PK" PRIMARY KEY ("ID")
);

在SQL Server中,我只需要执行以下操作即可获取插入行的ID。
INSERT INTO [NAMES]([NAME])VALUES('Random'); SELECT SCOPE_IDENTITY() Id

Oracle 12c的等效版本是什么?


我建议使用没有引号的表和列名:CREATE TABLE dummy_schema.names (id NUMBER.... 这是通常的做法... - wolφi
1个回答

7
等价的内容是
INSERT INTO dummy_schema.names (name) VALUES ('Random') 
RETURNING id INTO :myvalue;

如何获取返回的ID取决于宿主语言(Java、PL/SQL、SQL*Plus等)的机制。


谢谢。变量:myvalue会是什么类型? - AceVentur4
与您的主键列相同的数据类型,例如NUMBER(10,0)。您使用的是哪种编程语言? - wolφi
C# 使用 Dapper 作为 ORM。 - AceVentur4
不好意思,我不知道,但你可以看一下这个网站:https://dev59.com/_2kw5IYBdhLWcg3wlrga - wolφi
谢谢,最终按照你说的方法让它正常工作了! - AceVentur4
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接