奇怪的触发器问题! 请 zjcxc(邹建)继续跟贴,帮我解决这个问题!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是在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是什么地方的错误导致这种情况啊 TO zjcxc(邹建)那你的意思是表本身的問題嗎?不是我的TRIGGER寫法問題嗎?我只是要實現 本次出貨數量如果大於受定數量減去已經出貨數量,那麽就不能出貨,也就是不能保存這筆數據。為這個我問過很多次了,結果別人告訴我的寫法和我的一樣,我就不知道問題到底出在哪裏!我快急死了。 TO zjcxc我是第一次寫觸發器,我只是拿著本書來照著葫蘆畫瓢,所以好多東西我都不懂,也不知道什麽地方會出錯誤,先謝謝你的回復了 TO zjcxc(邹建)终于知道哪里不对了,写成where t.qty-isnull(t.qty_ps,0)<0就好了,可是我不明白道理:假设已经有一条数据TF_PSS.OS_NO TF_PSS.QTY TF_POS.QTY TF_POS.QTY_PSSO3B240002 2.00000000 10.00000000 2.00000000现插入以下数据却变为INSERTED.OS_NO INSERTED.QTY TF_POS.QTY TF_POS.QTY_PSSO3B240002 9.00000000 10.00000000 11.00000000 (我本以为还是2)这条数据是不合理的,要回滚事务,那也是针对TF_PSS啊,对于TF_POS.QTY_PS怎么回滚到没插入数据前的2呢? 我对触发器的理解是比如在tf_pss上写一个触发器,触发器条件中涉及到了另一个表tf_pos,那么当插入的数据不满足触发器的要求时只是取消对tf_pss表的本次插入,而对tf_pos的数据插入没有影响。因为我想的是触发器是在tf_pss上的,所以插入时只有插入tf_pss的数据是保存在inserted中的,而插入到tf_pos的数据是直接插入到tf_pos的。用软件来输入表单时是把不同的数据插入到不同的表,我在做一张销货单的时候数据要保存到tf_pss,tf_pos等表中我理解的问题在哪里? 怎么创建2个简单表的关联? mssql中同一个表两个字段进行比较 select * from openrowset读取DBF文件删除记录 MS-SQL Server 下栽的网址 简单 NOT EXISTS 存储过程中用"除"的结果不对是怎么回事?在线等.HELP! 开发C/S数据库前端用什么工具好呢,Delphi,vb,BCB,Powerbuilder? 寻找OA 怎样管理远程SQL SERVER服务器?高分求教 将人员表中的上级写到一行中分列显示 为什么数据库连接不上?谢谢答复! 简单问题
然后在所用的软件中进行数据输入,本来我要实现的是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是什么地方的错误导致这种情况啊
那你的意思是表本身的問題嗎?不是我的TRIGGER寫法問題嗎?
我只是要實現 本次出貨數量如果大於受定數量減去已經出貨數量,那麽就不能出貨,也就是不能保存這筆數據。
為這個我問過很多次了,結果別人告訴我的寫法和我的一樣,我就不知道問題到底出在哪裏!
我快急死了。
我是第一次寫觸發器,我只是拿著本書來照著葫蘆畫瓢,所以好多東西我都不懂,也不知道什麽地方會出錯誤,先謝謝你的回復了
终于知道哪里不对了,写成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呢?
因为我想的是触发器是在tf_pss上的,所以插入时只有插入tf_pss的数据是保存在inserted中的,而插入到tf_pos的数据是直接插入到tf_pos的。
用软件来输入表单时是把不同的数据插入到不同的表,我在做一张销货单的时候数据要保存到tf_pss,tf_pos等表中我理解的问题在哪里?