要求:
 1、表中的一个日期字段与系统日期比较,当日期小于系统日期触发;
 2、触发修改一个此表中字段的内容。

解决方案 »

  1.   

    create or replace trigger TriggerName
      before update on youtablename
      referencing NEW as FNew
      for each row
    begin
      if :FNew.DateField < sysdate then
         :FNew.ChangeField = ChangeValue;
      end if;
    exception
     when others then
        return;
    end TriggerName;
      

  2.   

    referencing  是什么意思?
    还有 FNew.ChangeField = ChangeValue
      

  3.   

    如果你对触发器一点都不了解的话,建议你不要写,写不好,后果会很严重的。呵呵create or replace trigger TriggerName --你要写的触发器的名字
      before update on youtablename --你要操作的表名
      referencing NEW as FNew --可以不这么写,代码里面的FNew 改成 NEW就可以
      for each row
    begin
      if :FNew.DateField < sysdate then --:FNew.DateField 你要判断的日期字段
         :FNew.ChangeField := ChangeValue; -- :FNew.ChangeField 你要更改的字段,ChangeValue 你要改成的值。 
      end if;
    exception
     when others then
        return;
    end TriggerName;
      

  4.   

    当你Update时,有个原来的记录,和新的记录。NEW就是新的记录
    OLD就是旧的记录
      

  5.   

    update 能不能改为select ?
    我想让它在查询之前改变!
      

  6.   

    触发器只能在变更数据时使用
    BEFORE and AFTER ROW for INSERT, UPDATE, and DELETE.
    CREATE OR REPLACE TRIGGER temp_biudr
    BEFORE INSERT OR UPDATE OR DELETE ON TEMP
    FOR EACH ROW
    BEGIN
        CASE
        WHEN inserting THEN
            dbms_output.put_line('inserting before');
        WHEN updating THEN
            dbms_output.put_line('updating before');
        WHEN deleting THEN
            dbms_output.put_line('deleting before');
        END CASE;
    END;CREATE OR REPLACE TRIGGER temp_aiudr
    AFTER INSERT OR UPDATE OR DELETE ON TEMP
    FOR EACH ROW
    BEGIN
        CASE
        WHEN inserting THEN
            dbms_output.put_line('inserting after');
        WHEN updating THEN
            dbms_output.put_line('updating after');
        WHEN deleting THEN
            dbms_output.put_line('deleting after');
        END CASE;
    END;
      

  7.   

    我感觉你的需求根本就不能用触发器完成,你应该用JOB,呵呵
      

  8.   

    xuejinlong(-@判官@-) 
    我想表的一个字段是随系统时间的变化,而变化的,而不一定是要更新表,这个有方法实现吗?
      

  9.   

    也就是说你的那个要变的字段,是虚的,不需要记录值,是这样嘛?那你可以建个视图,或者直接在SQL里面写啊。如果可以,你详细描述一下你的需求。或许可以帮你,呵呵