怎么写oracle的触发器-高分求解。在线等待

iamsafe 2003-10-16 09:51:56
有没有人写过Oracle的触发器?我现在需要写一个触发器,可以同步(同步插入、复制、删除)两个schema中的表,但是编译时,总是不成功,请各位帮帮忙,多谢!高分
代码及错误如下:

CREATE OR REPLACE TRIGGER tr_test_aa
AFTER INSERT ON "EXZSTV"."TEST"
REFERENCING OLD AS old NEW AS new
FOR EACH ROW

Begin
IF INSERTING THEN
INSERT INTO "exnews"."TEST" (TESTaa)
VALUES(:NEW.TESTaa);
END IF;
end tr_test_aa ;
其中EXZSTV、exnews是两个schema,test是表名,testaa是字段,两个schema中都有test,并且表结构完全相同。
在编译时出现如下错误:
pls-00201:必须说明标识符‘exnews.test'

...全文
37 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamsafe 2003-10-23
  • 打赏
  • 举报
回复
权限已经加入,但是还是没有成功,我用的是8.05,是不是有关系,还是提示同样的错误。
pls-00201:必须说明标识符‘exnews.test',为什么啊?郁闷中。。。
yangqingdelphi 2003-10-20
  • 打赏
  • 举报
回复
我认为是没有权限.
daydayupliq 2003-10-20
  • 打赏
  • 举报
回复
楼上的是可以的!!
楼主再试试了!
kevin218 2003-10-19
  • 打赏
  • 举报
回复
我在我的用户sbfinger下执行如下代码:
CREATE OR REPLACE TRIGGER tr_test_aa
AFTER INSERT ON "SBFINGER"."TEST"
REFERENCING OLD AS old NEW AS new
FOR EACH ROW

Begin
IF INSERTING THEN
INSERT INTO "SBFINGER"."TEST" (NAME)
VALUES(:NEW.NAME);
END IF;
end tr_test_aa ;
/

没问题,用spool写到文件里如下:
SQL> desc test
名称 空? 类型
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
EID VARCHAR2(10)
YEAR VARCHAR2(4)
MONTH VARCHAR2(2)

SQL> @d:\xx.sql

触发器已创建

SQL> SPOOL OFF

你是怎么执行的,写成sql语句的文件吗,你可能少了操作符号“/”,末尾一定的跟这个。
在一个我的sbfinger这里的权限是dba的。

你在试试。
rickle 2003-10-17
  • 打赏
  • 举报
回复
权限问题
beckhambobo 2003-10-16
  • 打赏
  • 举报
回复
grant insert any table to EXZSTV;
wxdsun 2003-10-16
  • 打赏
  • 举报
回复
可能是权限的问题,确认这个trigger owner 有对exnews.test 这个表的insert 权限

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧