首页
学习
活动
专区
圈层
工具
发布

生成GUID
EN

Stack Overflow用户
提问于 2010-07-05 17:38:56
回答 4查看 14.7K关注 0票数 13

我正在考虑在我的使用SQL Server的.net应用程序中使用GUID。我是应该编写一个存储过程来在输入的每个记录上生成GUID,还是应该直接从应用程序生成它。

问这个问题的原因(如果我错了,请纠正我):

I (as/pre)sume:

当从数据库生成GUID时,您可以假设DB记住了以前生成的GUID,因为应用程序很难记住它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-05 17:44:39

SQL Server内置了创建GUID的功能。不需要为此编写单独的存储过程。

您可以使用

  • NEWID()
  • NEWSEQUENTIALID()

这两个过程之间的关键区别在于,如果GUID用于主聚集键,则应使用顺序GUID。

我不知道为什么您希望数据库引擎记住以前生成的GUID。

票数 25
EN

Stack Overflow用户

发布于 2010-07-05 17:43:00

不,你的假设是错误的:数据库将不会记住任何东西-所以从这个角度来看没有任何好处。

如果您使用GUID作为SQL Server中的主键/聚集键,这从一开始就不是一个好主意(请参阅hereherehere为什么是这样),您至少应该使用 newsequentialid()函数作为对该列的默认约束。

代码语言:javascript
复制
CREATE TABLE YourTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) 

这样,数据库将为您的PK生成伪序列GUID,从而使使用GUID作为PK/CK的负面影响至少可以承受……

如果您没有使用GUID作为主键,那么我真的看不出在服务器上创建GUID有什么好处。

票数 5
EN

Stack Overflow用户

发布于 2010-07-05 17:48:24

我更喜欢在应用程序中创建GUID,而不是在数据库中。

  • 简化了插入后检索行的过程。更轻松的域/业务层单元testing.
  • Faster.
  • 至少对于实体框架是这样的。http://blogs.msdn.com/b/adonet/archive/2010/06/28/performance-impact-of-server-side-generated-guids-in-ef.aspx
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3178469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档