如果未提供,则在SQL Server中生成新的GUID

时间:2013-02-11 17:14:40

标签: sql sql-server

我正在更新我的数据库,以便为表中的每条记录提供一个GUID列。

此表由几个不同的来源填充,其中一些不会为新记录提供GUID。

如果没有传入新记录的值,我怎样才能在数据库端使用newid()填充此列?

2 个答案:

答案 0 :(得分:23)

请勿重复请勿放置NEWID()的默认列。如果您执行的GUID将是完全随机的,如果您对此列有任何索引,它将是无用的。如果要执行此操作,则需要将列默认设置为NEWSEQUENTIALID ( )

Kimberly Tripp在这个问题上有一个Great Article和另一个Great Article

默认实施NEWSEQUENTIALID ( )

CREATE TABLE foo
(unq_id UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
 cola varchar(10));

Full SQL Fiddle example.

答案 1 :(得分:5)

您可以将列的默认值设置为NEWID()。然后,只有当一个GUID尚未创建时,才会创建并分配GUID。