我正在考虑在我的使用SQL Server的.net应用程序中使用GUID。我是应该编写一个存储过程来在输入的每个记录上生成GUID,还是应该直接从应用程序生成它。
问这个问题的原因(如果我错了,请纠正我):
I (as/pre)sume:
当从数据库生成GUID时,您可以假设DB记住了以前生成的GUID,因为应用程序很难记住它。
发布于 2010-07-05 17:44:39
SQL Server内置了创建GUID的功能。不需要为此编写单独的存储过程。
您可以使用
这两个过程之间的关键区别在于,如果GUID用于主聚集键,则应使用顺序GUID。
我不知道为什么您希望数据库引擎记住以前生成的GUID。
发布于 2010-07-05 17:43:00
不,你的假设是错误的:数据库将不会记住任何东西-所以从这个角度来看没有任何好处。
如果您使用GUID作为SQL Server中的主键/聚集键,这从一开始就不是一个好主意(请参阅here、here或here为什么是这样),您至少应该使用 newsequentialid()函数作为对该列的默认约束。
CREATE TABLE YourTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) 这样,数据库将为您的PK生成伪序列GUID,从而使使用GUID作为PK/CK的负面影响至少可以承受……
如果您没有使用GUID作为主键,那么我真的看不出在服务器上创建GUID有什么好处。
发布于 2010-07-05 17:48:24
我更喜欢在应用程序中创建GUID,而不是在数据库中。
https://stackoverflow.com/questions/3178469
复制相似问题