我正在更新我的数据库,以便为表中的每条记录提供一个GUID列。
此表由几个不同的来源填充,其中一些不会为新记录提供GUID。
如果没有传入新记录的值,我怎样才能在数据库端使用newid()填充此列?
答案 0 :(得分:23)
请勿重复请勿放置NEWID()
的默认列。如果您执行的GUID将是完全随机的,如果您对此列有任何索引,它将是无用的。如果要执行此操作,则需要将列默认设置为NEWSEQUENTIALID ( )
Kimberly Tripp在这个问题上有一个Great Article和另一个Great Article。
默认实施NEWSEQUENTIALID ( )
:
CREATE TABLE foo
(unq_id UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
cola varchar(10));
答案 1 :(得分:5)
您可以将列的默认值设置为NEWID()
。然后,只有当一个GUID尚未创建时,才会创建并分配GUID。