对于SQLServer,似乎普遍认为将SELECT SCOPE_IDENTITY()添加到插入的末尾是返回新插入记录的PK的最佳方法,假设您使用自动增量字段派克。最佳实践:.NET:如何针对Oracle数据库返回PK?
但是,我似乎无法找到Oracle的等价物。
最佳实践似乎是使用一个序列来生成PK,但即使如此也有不同的选择。您是否将其留给开发人员以插入sequence.nexval或使用触发器?
在任何一种情况下,获取新ID似乎都是一个常见问题。
建议和解决方案我已经跨越运行包括:
- 创建一个存储过程返回的PK
- 运行从seq.nextval一个选择ID,然后传递一个到插入
- 选择MAX(ID)插入后(注:不要做)
- 回来的条款添加到insert
我应该ŧ他的“最佳实践”解决方案适用于这种情况吗?
但是,如果并发呼叫增加了序列,请注意,对吗? – Liam 2008-10-01 16:51:47
不,CURRVAL是从THIS会话序列中获得的最后一个值。 – 2008-10-01 16:53:55