如何在SQL Server中使用唯一值填充空列?

Bur*_*jua 5 sql sql-server unique

我有一个包含用户电子邮件的行的表,我想添加一个约束来使该行唯一.问题是有一些(大约200个)列具有空值.

我需要生成虚拟值并将它们插入空列.

我该怎么做?

谢谢

dkn*_*ack 8

描述

你可以使用这个T-SQL功能newid()

newid()创建uniqueidentifier类型的唯一值.

样品

UPDATE MyTable set Column = newid() where Column is null
Run Code Online (Sandbox Code Playgroud)

更多信息


Ole*_*Dok 5

如果你使用SQL Server 2008 - 考虑通过电子邮件过滤掉空值的唯一索引,像这样:

CREATE UNIQUE INDEX [UX.Email, not null] on dbo.YourTable(email)
WHERE email is not null
Run Code Online (Sandbox Code Playgroud)

要么

对于2008之前的SQL Server版本,您可以使用行的主键标识的值(如果有)

update yourtable set email = id where email is null
Run Code Online (Sandbox Code Playgroud)

如果你没有这样的密钥,至少可以使用NEWID()函数而不是id