zoukankan      html  css  js  c++  java
  • 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


     

  • 相关阅读:
    关于素数的具体问题
    Scala Apply
    Scala内部类
    Scala 类和对象
    Scala Tuple类型
    Scala数组
    sql server 游标
    表变量和临时表详解
    子查询详解
    EXEC 和 SP_EXECUTESQL的区别
  • 原文地址:https://www.cnblogs.com/kangzi/p/4127054.html
Copyright © 2011-2022 走看看