T-SQL 创建触发器 禁止插入空值

---假设在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


 

原文地址:https://www.cnblogs.com/kangzi/p/4127054.html