Oracle不能创建触发器,我昨天在sqlplus创建了一个,今天又不能创建了。说表或视图不存在。在plsql创建触发器窗口找不到我需要的表。但是我就是以wyuser这个用户登录的。序列和表都已创建了。查询和插入都没有问题。????大虾帮帮忙

解决方案 »

  1.   

    用户wyuser。给他赋值了角色:dba、connect 、aq_administrator_role 
    系统我赋值:alert any trigger 、select any table、create  any trigger、unlimited tablespace等权限 
      

  2.   

    你的表和视图是不是这个用户wyuser下面的
    如果不是的话,那就要分别把你用到的表和视图赋权限
    赋角色是没有用的
      

  3.   

    要确认创建触发器所依附的表是wyuser这个用户建立的
    可以在wyuser用户下查询:
    select table_name from user_tables where table_name like '表名%'
      

  4.   

    你确定你要创建触发器的表是在wyuser这个用户下面吗?你可以从这个执行下面的语句试试看有没有:
    select table_name from user_tables where table_name like '表名%';
      

  5.   

    oracle一般不说假话,说不存在,肯定不存在,或者非当前属主。确认触发器中涉及的表都在wyuser用户下。
      

  6.   

    你要操作哪个表? 估计表是存在的,所有者不对,在表名的前面加表的所有者
    如:
    select * from scott.emp;
      

  7.   

    我以wyuser登录sqlplus。
    select table_name from user_tables where table_name like 'N%';
    看到了我创建触发器的表
      

  8.   

    plsql下。以wyuser登录也能看到表。但是也不能创建触发器。
      

  9.   

    如果是这样 你把你的trigger 贴出来看看
    以及 这个sql下面的结果贴出来看看
      

  10.   

    在plsql
    select table_name from user_tables where table_name like 'N%'; 
    确看不到我创建触发器的表。怎么回事?????
      

  11.   

    SQL> select table_name from user_tables where table_name like 'N%'; TABLE_NAME
    --------------------------
    NBSCH_BANCI
    NBSCH_BMGONGZHONG
    NBSCH_GONGZHONG
    NBSCH_INTER_MARKET_STRUC
    NBSCH_LAOWUDANJIA
    NBSCH_ZHIGONG已选择6行。SQL> 序列能创建  Create   Sequence  zhigongseq   Start   With   4198     Increment   By   1;  
      CREATE   OR   REPLACE   TRIGGER   zhigong_RIGGER   
      BEFORE   INSERT   
      ON   Nbsch_ZhiGong   FOR   EACH   ROW   
      BEGIN   
          SELECT   zhigongseq.NEXTVAL   INTO   :NEW.ID   FROM   DUAL;   
      END;   
      / 
      

  12.   

    我在plsql中
    select * from user_tables WHERE TABLESPACE_NAME='WYMK';就没有表
    在sqlplus中
    select * from user_tables WHERE TABLESPACE_NAME='WYMK';
    就能够看到我创建的表
      

  13.   

    这样的东西创建触发器没必要,直接在程序里得到sequence就行了
      

  14.   

    我现在就新建了一个用户wyuser。表空间wymk。
    提示的当然明确。您。
    都是以wyuser登录
    我在plsql中 
    select * from user_tables WHERE TABLESPACE_NAME='WYMK';就没有表记录
    在sqlplus中 
    select * from user_tables WHERE TABLESPACE_NAME='WYMK'; 
    就能够看到我创建的表记录
    我在manger console下也创建了也是表或视图出存在。manger console下表是选择的不是我写的。
      

  15.   

    我创建了Oracle用户wy。给他赋值了角色:dba、connect 、aq_administrator_role CREATE  OR  REPLACE  TRIGGER  bm_RIGGER  
      BEFORE  INSERT  
      ON  BM FOR  EACH  ROW  
      BEGIN  
          SELECT  bmseqID.NEXTVAL  INTO  :NEW.ID  FROM  DUAL;  
      END; CREATE TABLE WYUSER.bm 
    id number , 
    parentid number  , 
    bmmc nvarchar2 (50)  , 
    fzr nvarchar2 (50)  , 
    dh nvarchar2 (50)  , 
    level1 nvarchar2 (50)  , 
    scdw char (10)  , 
    bmbh nvarchar2 (15)  , 
    bh char (10)  , 
    bz nvarchar2 (50)  , 
    tjtype varchar2 (1)  , 
    flag varchar2 (1)  
    )  TABLESPACE WYMK 注意三个红色标记部分。 
    建立触发器的用户是wy,而表的属主是WYUSER,当然找不到表了。http://topic.csdn.net/u/20090328/18/ed90eb52-0364-42c9-8d77-e73ab9677b19.html 
      

  16.   

    jdsnhan 您好:
    非常感激您的仔细。我就是建立了wyuser用户。wy这个用户我没有创建。我少写了。所以我另开的贴
      

  17.   

    我以system登录。创建了CREATE  OR  REPLACE  TRIGGER  zhigong_RIGGER  
      BEFORE  INSERT  
      ON  wyuser.Nbsch_ZhiGong  FOR  EACH  ROW  
      BEGIN  
          SELECT  zhigongseq.NEXTVAL  INTO  :NEW.ID  FROM  DUAL;  
      END;  
      / 
    可以。但是以wyuser登录就不可以。??????
      

  18.   

    其实Oracle的错误提示已经是再清楚不过.