Sql2008

--1、使用CHECK约束来强制执行触发器的唯一值。
--问题:SQL Server 数据表中有一列允许为空值。在该列有非空值的时候,想让该值为唯一值。通过编程实现这一
--目标的最佳做法是什么?如果在该列中设置一个UNIQE约束,可以只在一个记录中保有空值。正在使用触发器来强
--制执行这个限制,能否推荐一种更简单的方法来确保所有非空的值都是唯一的吗?

use tempdb
Create table t1 (c1 int null,c2 char(5) null)
Create trigger mytrigger on t1 for insert,update as
BEGIN
IF(select max(cnt) from (select count(i.c1)
as cnt from t1,inserted i where t1.c1 = i.c1 group
by i.c1) x)>1
ROLLBACK TRAN
END
GO

你可能感兴趣的:(sql,编程,SQL Server,Go)