gpt4 book ai didi

.net - 最佳实践 : . NET : How to return PK against an oracle database?

转载 作者:行者123 更新时间:2023-12-03 06:52:34 24 4
gpt4 key购买 nike

对于 SQLServer,似乎普遍认为在插入末尾添加 SELECT SCOPE_IDENTITY() 是返回新插入记录的 PK 的最佳方式(假设您使用的是自动增量字段)对于峰。

但是,我似乎找不到 Oracle 的等效项。

最佳实践似乎是使用序列来生成 PK,但对于如何实现这一点也有不同的选择。您是否让开发人员自行插入sequence.nexval,或使用触发器?

无论哪种情况,取回新 ID 似乎都是一个常见问题。

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

  • 创建一个返回 PK 的存储过程
  • 从 seq.nextval 运行选择 id,然后将其传递给插入
  • 插入后选择 max(id)(注意:不要这样做!)
  • 向插入添加 RETURNING 子句

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

最佳答案

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

例如:

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

插入表(名称)值('BOB'),将 EMP_ID 返回到 o_EMP_ID;

假设该行位于输出参数为 o_EMP_ID 的存储过程中。

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

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

关于.net - 最佳实践 : . NET : How to return PK against an oracle database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/158571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com