---假设在SQL SERVER 2005里面有一张表,其中有两个字段需要做唯一性约束,
---不能有重复值,但是允许其为空值,如果都是空值,则允许重复
CREATE TRIGGER [dbo].[insert]
ON [dbo].[table1]
INSTEAD OF INSERT
AS
BEGIN
declare @i int;
declare @errmsg char;
declare cursor1 cursor for
select count(*) num from inserted i, table1 t
where (i.col1=t.col1 and i.col2=t.col2 and i.col1 is not null and t.col1 is not null)
or (i.col1 is null and i.col2=t.col2)
or (i.col2 is null and i.col1=t.col1);
open cursor1;
fetch cursor1 into @i;
close cursor1;
if (@i=0)
insert into table1 select * from inserted;
else
begin
set @errmsg='存在重复记录,插入失败';
RAISERROR(@errmsg,16,1);
rollback;
end
END