表N是这个用户下的表吗?
不是的话,需要赋给他权限,并且在前面加上用户名
如:uname.N

解决方案 »

  1.   

    N不是一个表,而只是一个别名,是在前面的
    REFERENCING NEW AS N
    语句中定义的,我查了<<Oracle 9i SQL Reference>>,按照其中的定义做的,但是下面INSERT子句使用的时候就会有问题,所以才不知道为什么:)各位高手帮帮忙啊!
      

  2.   

    缺少模式名,找不到表
    user.tbname
      

  3.   

    缺少模式名,找不到表
    user.tbname
      

  4.   

    INSERT INTO B_FILE values(SUBSTR(:n.A001,1,5),'XXXXX' )
      

  5.   

    理解错误,A_file表是否有A001字段?
    CREATE  OR  REPLACE  TRIGGER  A_I  
    BEFORE  INSERT  ON  A_FILE  
    FOR  EACH  ROW  
    INSERT  INTO  B_FILE  values(SUBSTR(:new.A001,1,5),'XXXXX');
      

  6.   

    INSERT INTO B_FILE values(SUBSTR(:n.A001,1,5),'XXXXX' )
      

  7.   

    还有一个问题,我把语句改成:
    INSERT INTO B_FILE SELECT SUBSTR(A001,1,5),'XXXXX' FROM :N
    为什么就报错:
    TRIGGER A_I 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    1/63     PLS-00049: 错误的赋值变量 'N'警告: 创建的触发器带有编译错误。
      

  8.   

    你这样写不正确!
    触发器中使用new或old,
    :new不是一个表,是一行数据
    需要这样来使用 :new.colname or :old.colname
    只能用
    INSERT    INTO    B_FILE    values(SUBSTR(:new.A001,1,5),'XXXXX');
      

  9.   

    oracle是不能引用 new作为记录的.楼主以前使用sqlserver的吧!:)
      

  10.   

    不好意思,小弟以前是使用SQL Server的,只是现在公司要做Oracle上的测试才赶鸭子上架,菜鸟一个,今后还请各位大侠多多指点,先谢过了!
      

  11.   

    给个例子你看一下!!!CREATE OR REPLACE TRIGGER TRIGGER_table
           AFTER INSERT OR UPDATE OR DELETE ON 表名 FOR EACH ROW
    DECLARE
      p_count integer;
    BEGIN
      IF INSERTING THEN
         SELECT COUNT(*) INTO p_count FROM table_name2  WHERE CUSTOMERID = :NEW.CUSTOMERID;
         IF p_count = 0 THEN
            INSERT INTO CRM.table_name2  (CUSTOMERID,CUSTOMERCODE,CUSTOMERDESC) VALUES (:NEW.CUSTOMERID,:NEW.CUSTOMERCODE,:NEW.CUSTOMERDESC);
         END IF;
      ELSIF UPDATING THEN
         UPDATE table_name2  SET CUSTOMERID = :NEW.CUSTOMERID, CUSTOMERCODE = :NEW.CUSTOMERCODE, CUSTOMERDESC = :NEW.CUSTOMERDESC
          WHERE CUSTOMERID = :OLD.CUSTOMERID;
      ELSE
         DELETE FROM table_name2  WHERE CUSTOMERID = :OLD.CUSTOMERID;
      END IF;
    END;