Oracle始终获取具有标识的插入行的ID [重复]

Posted

技术标签:

【中文标题】Oracle始终获取具有标识的插入行的ID [重复]【英文标题】:Oracle get id of inserted row with identity always [duplicate] 【发布时间】:2018-12-05 14:58:32 【问题描述】:

目前我有一个具有这种结构的表:

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 的等价物是什么?

【问题讨论】:

我建议使用不带“QUOTES”的表名和列名:CREATE TABLE dummy_schema.names (id NUMBER.... 是通常的方式... 【参考方案1】:

等价于

INSERT INTO dummy_schema.names (name) VALUES ('Random') 
RETURNING id INTO :myvalue;

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

【讨论】:

谢谢。变量 :myvalue 是什么类型的? 与您的主键列相同的数据类型,在您的情况下为 NUMBER(10,0)。您使用什么语言? C# 以 dapper 作为 ORM 抱歉,不知道,不过看看***.com/questions/9789737/… 谢谢,终于如你所说的那样工作了!

以上是关于Oracle始终获取具有标识的插入行的ID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取插入行的ID [重复]

获取 Google Apps 脚本中最后插入行的标识

Oracle GoldenGate 生成表列时始终标识类型_IT 不允许在目标数据库表中插入

获取最后插入行的主键 ID 以运行多个插入操作 [重复]

oracle 11g - 在oracle 11g数据库中获取标识列的最后一个插入ID的方法是什么?

我想获取我刚刚插入的行的 ID。我可以知道怎么做吗[重复]