问题1。select @ln_licheng= @ln_licheng * 2 请用set 因为select 会返回值向客户端,这没必要。
问题2。if @ln_heliraoxing=null  请is 来代替=
问题3。rollback transaction ,何来回滚。
问题4 。请不要在触发器里用系统的raiserror,最好用自己的异常处理过程。
问题5。
if @ln_heliraoxing=null 
begin 
select @ln_heliraoxing=0  
end 没必要这样用,只要用的时候用isnull(@ln_heliraoxing,0) 就好了。
问题6。你定义的大部分变量都可以省略。
问题7。当向列插入NULL值的时候,最好省略插入,这会在以后的逻辑中会带来麻烦不知道我说的对不对

解决方案 »

  1.   

    你的触发改为
    insert 目标表 (列名1,列名2,列名3,列名4) select 列名1,列名2,'常量1',null where ls_shenhe='1' and ls_paichedan in (select c_paichedan from acc_glgq_tab)
    形式
      

  2.   

    1、所有
    begin 
    raiserror('当审核时向应耗油耗表中插入信息时出现错误,请与系统管理员联系!',16,10) 
    return 
    rollback transaction 
    end 改为:
    begin 
    raiserror('当审核时向应耗油耗表中插入信息时出现错误,请与系统管理员联系!',16,10) 
    rollback transaction 
    return 
    end 关于:
    回复人: qiubolecn(来自差生市) ( ) 信誉:99  2003-07-07 22:41:00  得分:0 
     
    问题1。select @ln_licheng= @ln_licheng * 2 请用set 因为select 会返回值向客户端,这没必要。
    问题2。if @ln_heliraoxing=null  请is 来代替=
    问题3。rollback transaction ,何来回滚。
    问题4 。请不要在触发器里用系统的raiserror,最好用自己的异常处理过程。
    问题5。
    if @ln_heliraoxing=null 
    begin 
    select @ln_heliraoxing=0  
    end 没必要这样用,只要用的时候用isnull(@ln_heliraoxing,0) 就好了。
    问题6。你定义的大部分变量都可以省略。
    问题7。当向列插入NULL值的时候,最好省略插入,这会在以后的逻辑中会带来麻烦不知道我说的对不对
      

    问题3。rollback transaction ,何来回滚。
    由回滚,回滚触发触发器的语句问题4 。请不要在触发器里用系统的raiserror,最好用自己的异常处理过程。
    不同意,出错回滚的情况用raiserror提示简单易行。
     
      

  3.   

    2、所有的
    begin 
    raiserror('没有取得值',16,10) 
    return 
    end 
    让人不明白,没有回滚但是出错,出错了但是数据更改了,但愿你的用户能理解
      

  4.   

    我的经验,在触发器中的错误信息(raiserror),客户端程序好像捕获不到。还有像上面说的,你光return了美哟回滚,记录还是更新了阿