Bur*_*jua 5 sql sql-server unique
我有一个包含用户电子邮件的行的表,我想添加一个约束来使该行唯一.问题是有一些(大约200个)列具有空值.
我需要生成虚拟值并将它们插入空列.
我该怎么做?
谢谢
你可以使用这个T-SQL功能newid()
newid()创建uniqueidentifier类型的唯一值.
UPDATE MyTable set Column = newid() where Column is null
Run Code Online (Sandbox Code Playgroud)
如果你使用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