你要操作哪个表? 估计表是存在的,所有者不对,在表名的前面加表的所有者 如: select * from scott.emp;
我以wyuser登录sqlplus。 select table_name from user_tables where table_name like 'N%'; 看到了我创建触发器的表
plsql下。以wyuser登录也能看到表。但是也不能创建触发器。
如果是这样 你把你的trigger 贴出来看看 以及 这个sql下面的结果贴出来看看
在plsql select table_name from user_tables where table_name like 'N%'; 确看不到我创建触发器的表。怎么回事?????
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; /
我在plsql中 select * from user_tables WHERE TABLESPACE_NAME='WYMK';就没有表 在sqlplus中 select * from user_tables WHERE TABLESPACE_NAME='WYMK'; 就能够看到我创建的表
这样的东西创建触发器没必要,直接在程序里得到sequence就行了
我现在就新建了一个用户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下表是选择的不是我写的。
我创建了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
我以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登录就不可以。??????
系统我赋值:alert any trigger 、select any table、create any trigger、unlimited tablespace等权限
如果不是的话,那就要分别把你用到的表和视图赋权限
赋角色是没有用的
可以在wyuser用户下查询:
select table_name from user_tables where table_name like '表名%'
select table_name from user_tables where table_name like '表名%';
如:
select * from scott.emp;
select table_name from user_tables where table_name like 'N%';
看到了我创建触发器的表
以及 这个sql下面的结果贴出来看看
select table_name from user_tables where table_name like 'N%';
确看不到我创建触发器的表。怎么回事?????
--------------------------
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;
/
select * from user_tables WHERE TABLESPACE_NAME='WYMK';就没有表
在sqlplus中
select * from user_tables WHERE TABLESPACE_NAME='WYMK';
就能够看到我创建的表
提示的当然明确。您。
都是以wyuser登录
我在plsql中
select * from user_tables WHERE TABLESPACE_NAME='WYMK';就没有表记录
在sqlplus中
select * from user_tables WHERE TABLESPACE_NAME='WYMK';
就能够看到我创建的表记录
我在manger console下也创建了也是表或视图出存在。manger console下表是选择的不是我写的。
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
非常感激您的仔细。我就是建立了wyuser用户。wy这个用户我没有创建。我少写了。所以我另开的贴
BEFORE INSERT
ON wyuser.Nbsch_ZhiGong FOR EACH ROW
BEGIN
SELECT zhigongseq.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
可以。但是以wyuser登录就不可以。??????