请 zjcxc(邹建)继续跟贴,帮我解决这个问题!谢谢!

解决方案 »

  1.   

    我是在QUERY ANALYZER中输入TRIGGER 后执行成功。
    然后在所用的软件中进行数据输入,本来我要实现的是i.qty>t.qty-isnull(t.qty_ps,0)就不能保存此笔数据,但是现在是i.qty<t.qty-isnull(t.qty_ps,0)也不能保存了,此时出现我所说的出错提示信息,
    只有i.qty<t.qty-isnull(t.qty_ps,0)/2是才可以正常把数据保存进去。
    奇怪,为什么?
    我写的TRIGGER是什么地方的错误导致这种情况啊
      

  2.   

    TO zjcxc(邹建)
    那你的意思是表本身的問題嗎?不是我的TRIGGER寫法問題嗎?
    我只是要實現 本次出貨數量如果大於受定數量減去已經出貨數量,那麽就不能出貨,也就是不能保存這筆數據。
    為這個我問過很多次了,結果別人告訴我的寫法和我的一樣,我就不知道問題到底出在哪裏!
    我快急死了。
      

  3.   

    TO zjcxc
    我是第一次寫觸發器,我只是拿著本書來照著葫蘆畫瓢,所以好多東西我都不懂,也不知道什麽地方會出錯誤,先謝謝你的回復了
      

  4.   

    TO zjcxc(邹建)
    终于知道哪里不对了,写成where t.qty-isnull(t.qty_ps,0)<0就好了,可是我不明白道理:
    假设已经有一条数据
    TF_PSS.OS_NO      TF_PSS.QTY         TF_POS.QTY       TF_POS.QTY_PS
    SO3B240002 2.00000000 10.00000000 2.00000000
    现插入以下数据却变为
    INSERTED.OS_NO    INSERTED.QTY       TF_POS.QTY       TF_POS.QTY_PS
    SO3B240002        9.00000000         10.00000000      11.00000000 (我本以为还是2)
    这条数据是不合理的,要回滚事务,那也是针对TF_PSS啊,对于TF_POS.QTY_PS怎么回滚到没插入数据前的2呢? 
      

  5.   

    我对触发器的理解是比如在tf_pss上写一个触发器,触发器条件中涉及到了另一个表tf_pos,那么当插入的数据不满足触发器的要求时只是取消对tf_pss表的本次插入,而对tf_pos的数据插入没有影响。
    因为我想的是触发器是在tf_pss上的,所以插入时只有插入tf_pss的数据是保存在inserted中的,而插入到tf_pos的数据是直接插入到tf_pos的。
    用软件来输入表单时是把不同的数据插入到不同的表,我在做一张销货单的时候数据要保存到tf_pss,tf_pos等表中我理解的问题在哪里?