12

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

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

仅当没有为新记录传入值时,如何在数据库端使用 newid() 填充此列?

4

2 回答 2

23

不要我重复不要放置默认列NEWID()。如果您执行 GUID,您得到的将是完全随机的,如果您在此列上有任何类型的索引,它将毫无用处。如果要执行此操作,则要将列默认设置为NEWSEQUENTIALID ( )

Kimberly Tripp 有一篇关于这个主题的好文章和另一篇好文章。

NEWSEQUENTIALID ( )作为默认实现:

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

完整的 SQL Fiddle 示例。.

于 2013-02-11T17:27:37.613 回答
5

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

于 2013-02-11T17:20:47.473 回答