难道没人知道?bzszp、leimin帮帮忙啊

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER trigger_name
    before|after INSERT
    ...
      

  2.   

    to  ORARichard(没钱的日子......)
    我不能建表级 的触发器,因为我还要使用:old 和 :new 中的内容
      

  3.   

    问题描述如下:
    表A的数据结构:
    SQL> desc ainslabel
    INSTCODE                NOT NULL VARCHAR2(12)
    MEASITEM                 NOT NULL NUMBER(2)
    STARTVALUE                        NUMBER
    ENDVALUE                          NUMBER
    ENDTIME                           DATE我在该表上建了一个触发器TRG_AINSLABEL
    CREATE OR REPLACE TRIGGER "TRG_AINSLABEL" after
    INSERT OR DELETEOR UPDATE OF "ENDTIME", "ENDVALUE", "INSTCODE", "MEASITEM", "STARTVALUE" ON "AINSLABEL" FOR EACH ROW
    部分内容如下:
    if inserting then
    .....
    select nvl(startvalue,0) into n_startvalue from ainslabel 
              where instcode = v_instcode and measitem=:new.measitem;
    ...
    elsif updating then
    ....
    select nvl(startvalue,0) into n_startvalue from ainslabel 
              where instcode = v_instcode and measitem=:new.measitem;else...
    select nvl(startvalue,0) into n_startvalue from ainslabel 
              where instcode = v_instcode and measitem=:new.measitem;
    ...
    end if;以上的三个Select 语句都不能执行,不知该如何解决
      

  4.   

    你先做一个on insert试试,看看有什么样的错
    update和delete等会再说
      

  5.   

    错误:ORA-04091: 表 EDMS.AINSLABEL 发生了变化,触发器/函数不能读
      

  6.   

    有MSN吗,或把before insert的触发器贴上来
      

  7.   

    我写了一个读自身表的触发器,好象没问题啊REATE OR REPLACE TRIGGER "WATCHDB"."TRIGGER_ON_INSERT" BEFORE INSERT ON "WATCHDB"."JBXX" REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW declare newid number;
    begin
    select count(*) into newid from jbxx;
    insert into jbxxcs(lffh,id) values(:new.lffh,newid);
    end;