请问SQL2000里有没有before可以用到触发器呢
好像就只有after可以用吧?
请各位指教啊

解决方案 »

  1.   

    instead of,一般可用于视图更新
      

  2.   


    这话读着这么别扭呢?你说清楚问题了吗?触发器自己写,要after还是before看情况,但是肯定都可以实现。
      

  3.   

    回复3楼
    这还不够清楚吗
    就是在写触发器时无法使用before触发事件
    在机房和自己电脑都是这样
    你试过吗?
      

  4.   

    http://blog.csdn.net/fredrickhu/archive/2009/10/21/4708906.aspx
      

  5.   

    我也不太明白你在触发之前想要干什么?如果是想要之前的数据,可以到deleted表中去取数据.
      

  6.   

    不是我就是想问下这个before能不能用
    比如说插入一条不是主键的数据
    如果有用before判断添加失败
    但问题是根本不能用before这条语句
      

  7.   

    如果是这个需求,只能先用语句判断,貌似触发器做不到.
    if exists(select 1 from tb where id = @id)
       --存在
    else
       --不存在
      

  8.   

    after好像可以和上面的语句一起连用的呀
    但就是不明白
    书上写着有before这条语句但上机不能实现
      

  9.   

    例如
    create trigger sale
    before insert on teacher
    for each row
    as begin
    if(new.job='教授') and (new.sal<4000) then
    new.sal=4000
    end if
    end
    这条语句上机的时候就无法实现
    就是在before那一行出错
      

  10.   

    触发前可以用instead of
    但是sqlserver 的instead of跟oracle 的before有本质区别:
    比如 statement1 为引发触发器运行而本身要执行的操作,比如引发触发器执行的update, insert等
    statement2为触发器里要执行的操作(也就是触发器内部的逻辑)
    在before触发器里,执行完statement2后,要完成继续statement1的操作
    而 instead of触发器里,statemen2是替代了 statement1.
    看名字也可以想出有区别。