当前位置:  开发笔记 > 编程语言 > 正文

字段值必须是唯一的,除非它为NULL

如何解决《字段值必须是唯一的,除非它为NULL》经验,为你挑选了1个好方法。

我正在使用SQL Server 2005.

我有一个必须包含唯一值或NULL值的字段.我想我应该用a CHECK CONSTRAINT或a 强制执行TRIGGER for INSERT, UPDATE.

在触发器上使用约束是否有优势(反之亦然)?这样的约束/触发器可能是什么样的?

或者是否有其他更合适的选择我没有考虑过?



1> dotjoe..:

我创建了一个带有索引的视图,该索引通过where子句忽略空值...即,如果在表中插入null,则视图不关心,但如果插入非空值,则视图将强制执行约束.

create view dbo.UniqueAssetTag with schemabinding
as
select asset_tag
from dbo.equipment
where asset_tag is not null

GO

create unique clustered index ix_UniqueAssetTag
on UniqueAssetTag(asset_tag)

GO

所以现在我的设备表有一个asset_tag列,允许多个空值但只有唯一的非空值.

注意:如果使用mssql 2000,则需要在对表执行任何插入,更新或删除之前" SET ARITHABORT ON ".很确定mssql 2005及以上版本不需要这样做.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有