我有个Insert的触发器,在这个触发器中,我想根据某一个值来判断是否要执行这个insert语句,好象不允许,有什么办法吗?

解决方案 »

  1.   

      DECLARE @CashSettlmentId nvarchar(40)         
      Select @CashSettlmentId=CashSettlementId from inserted--我只想让@CashSettlmentId = 7000时才执行下面的语句,有什么办法吗?  BEGIN  
      
     INSERT INTO Log_DataStep(TransactionId,OP,OP_Date,OP_IP,DataStep)
     SELECT TransactionId,'operator',getdate(),'127.0.0.1','DATASTEP' 
        
            from inserted
    end
      

  2.   

    --try
    create trigger tri_insert on Log_DataStep
    instead of insert
    as
      if not exists(select 1 from Log_DataStep where CashSettlementId=7000 )
        rollback
      
      
      

  3.   

    同意楼上,在触发器中写条件,条件不满足时用rollback
      

  4.   

    if not exists(select 1 from Log_DataStep where CashSettlementId=7000 )这个能不能替换成判断@CashSettlmentId 这个值已经在前边查出来。    case when @CashSettlmentId=7001 then
        rollback
    end
    但这样报语法错误
      

  5.   

    你不是判斷CashSettlementId不等於7000不插入嗎?
    沒有必要引入變量Y
      

  6.   

    Select @CashSettlmentId=CashSettlementId from inserted
    前边已经取出这个变量了,我后边还要用这个变量,所以不想再查一遍,这里不能用case吗?
      

  7.   

    if @CashSettlmentId=7001  rollback 
      

  8.   

     if @CashSettlmentId<>7000 
       rollback