CREATE TRIGGER ZWWLDW_TR
ON ZWWLDW
FOR INSERT AS
DECLARE @ADDR VARCHAR(60), @TELE VARCHAR(20),@KHH VARCHAR(60),@YHZH VARCHAR(20),@SH VARCHAR(20),@LXR varchar(20)
SELECT @ADDR= ZWWLDW_ADDR, @TELE=ZWWLDW_TELE,@KHH=ZWWLDW_KHH,@YHZH=ZWWLDW_YHZH,@SH=ZWWLDW_SH,@LXR=ZWWLDW_LXR
FROM INSERTED
IF (@ADDR IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @ADDR)
END
IF(@TELE IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @TELE)
END
IF(@KHH IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @KHH)
END
IF(@YHZH IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @YHZH)
END
IF(@SH IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @SH)
END
IF(@LXR IS NULL)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('请确认后重新录入!',16,1, @LXR)
END
这个触发器是我写的,但是没有起作用,我的目的就是当插入这表的时候,检查这几个字段不能为空,请指教,哪里错了,谢谢!

解决方案 »

  1.   

    这个没有必要用触发器
    为什么不用约束not null 呢?
      

  2.   

    insert 成功的话,才有数据进入 inserted!如果你的数据表中有非空值约束,那么插入相应字段的空值时,触发器当然不起作用了...
      

  3.   

    CREATE TRIGGER ZWWLDW_TR
    ON ZWWLDW
    FOR INSERT AS
    DECLARE @ADDR VARCHAR(60), @TELE VARCHAR(20),@KHH VARCHAR(60),@YHZH VARCHAR(20),@SH VARCHAR(20),@LXR varchar(20)
    SELECT @ADDR= ZWWLDW_ADDR, @TELE=ZWWLDW_TELE,@KHH=ZWWLDW_KHH,@YHZH=ZWWLDW_YHZH,@SH=ZWWLDW_SH,@LXR=ZWWLDW_LXR
    FROM INSERTED
    IF (@ADDR ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @ADDR)
    END
    IF(@TELE ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @TELE)
    END
    IF(@KHH ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @KHH)
    END
    IF(@YHZH ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @YHZH)
    END
    IF(@SH ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @SH)
    END
    IF(@LXR ='')
    BEGIN
    ROLLBACK TRANSACTION
    RAISERROR('请确认后重新录入!',16,1, @LXR)
    END这么写就对了,感谢大家哦!