当前位置:  开发笔记 > 数据库 > 正文

最佳实践:.NET:如何针对oracle数据库返回PK?

如何解决《最佳实践:.NET:如何针对oracle数据库返回PK?》经验,为你挑选了1个好方法。

使用SQLServer,似乎普遍接受的是,在插入的末尾添加SELECT SCOPE_IDENTITY()是返回新插入记录的PK的最佳方法,假设您正在为pk使用自动增量字段.

但是,我似乎无法找到Oracle的等价物.

最佳实践似乎是使用序列来生成PK,但是如何实现甚至可以有不同的选项.您是否将其留给开发人员插入sequence.nexval,或使用触发器?

在任何一种情况下,获取新ID似乎是一个常见问题.

我遇到的建议和解决方案包括:

创建一个返回PK的存储过程

从seq.nextval运行select id,然后将其传递给insert

插入后选择max(id)(注意:不要这样做!)

在插入中添加RETURNING子句

对于这种情况,"最佳实践"解决方案应该是什么?



1> ScottCher..:

您可以使用RETURNING子句在Oracle存储过程中执行此操作.

例如:

TABLEA具有NAME和EMP_ID.插入记录时,内部填充EMP_ID.

INSERT INTO TABLEA(NAME)VALUES('BOB')将EMP_ID返回到o_EMP_ID;

这是假设该行在存储过程中,输出参数为o_EMP_ID.

希望有帮助......如果没有,这里有一个更详细的例子:

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有