GUID 的 SCOPE_IDENTITY() 吗?
谁能告诉我在 SQL Server 中使用 GUID 作为主键时是否存在与 SCOPE_IDENTITY()
等效的函数?
我不想先创建 GUID 并将其保存为变量,因为我们使用顺序 GUID 作为主键。
知道检索最后插入的 GUID 主键的最佳方法是什么吗?
Can anyone tell me if there is an equivalent of SCOPE_IDENTITY()
when using GUIDs as a primary key in SQL Server?
I don't want to create the GUID first and save as a variable as we're using sequential GUIDs as our primary keys.
Any idea on what the best way to retrieve the last inserted GUID primary key?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用 OUTPUT 取回 GUID。当您插入多条记录时,这也适用。
参考: 探索 SQL 2005 的 OUTPUT 子句
You can get the GUID back by using OUTPUT. This works when you're inserting multiple records also.
Reference: Exploring SQL 2005’s OUTPUT Clause
使用 GUID 作为主键时,没有 SCOPE_IDENTITY() 等效项,但您可以使用 OUTPUT 子句来实现类似的结果。您不需要使用表变量进行输出。
如果您想从 .Net 客户端读取值,上面的示例非常有用。要从 .Net 读取值,您只需使用 ExecuteScalar 方法。
There is no SCOPE_IDENTITY() equivalent when using GUIDs as primary keys, but you can use the OUTPUT clause to achieve a similar result. You don't need to use a table variable for output.
The example above is useful if you want to read the value from a .Net client. To read the value from .Net you would just use the ExecuteScalar method.
您想使用 NEWID()
但 GUID 中存在聚集索引问题。也读一下这个NEWSEQUENTIALID()。这些是我的想法,先思考一下使用 GUID 作为主键 。 :)
you want to use NEWID()
but clustered index problem are there in GUID . read this one tooNEWSEQUENTIALID() .These are my ideas ,think before use GUID as primary Key . :)
使用该线程作为资源,我创建了以下内容以在触发器中使用:
可能会帮助其他人做同样的事情。很好奇是否有人对性能有什么不好的看法,如果这不是一个好主意。
Using this thread as a resource, I created the following for use within a trigger:
Might help someone else doing the same thing. Curious if anyone has anything bad to say performance wise if this is not a good idea or not.