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

标签 sql sql-server

我正在更新数据库,为表中的每条记录添加一个 GUID 列。

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

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

最佳答案

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

金伯利特里普有一个Great Article另一个 Great Article关于这个主题。

要实现 NEWSEQUENTIALID ( ) 作为默认值:

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

Full SQL Fiddle example. .

关于sql - 如果未提供,则在 SQL Server 中生成新的 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817235/

相关文章:

java - MySQL 错误 - 不正确的 DOUBLE 值 : 'chests'

sql - 如何在 SQL Server 中选择连续的重复项

java - 搜索数据库后,打印结果的整行

sql-server - SQL 服务器 : Return records within X days of a date

sql - 如何在 SQL Server 2005 中制作尴尬的 sql 表枢轴?

sql - 如何在 UPDATE 语句中使用 regexp_matches()?

sql-server - 有没有办法让 SQL Server 中的事务或连接只读?

sql - 如何将 .sql 文件转换为 SAS 数据集?

.net - 在 SQL 或 .NET 中比较复杂字符串的最佳方法

SQLDataReader 排序顺序与存储过程顺序