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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:43   1146   0

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP