我要使用 Oracle 数据库解决一个问题。
Oracle 数据库中有两种模式:XXX 和 YYY
模式 XXX 包含一个名为 YYY 的表(与第二个模式同名)。
模式 YYY 包含一些序列(比如说序列 ZZZ)和日志表,我需要在模式 XXX 中由触发器使用它们。
但是当我尝试使用这种结构在表 XXX.some_table 上编写触发器时:
SELECT YYY.ZZZ.NEXTVAL INTO AAA FROM DUAL
Oracle 将 YYY 视为 XXX 模式中的表并显示错误消息 “必须声明组件 ZZZ”。为XXX用户设置了访问YYY.ZZZ序列的适当权限,但没有用。
如何避免这种情况?不幸的是,数据库的结构是固定的,无法更改。
最佳答案
您可以编写触发器代码,因此您可以一些 控制数据库。那挺好的。
我建议你使用同义词来解决这个问题:
create synonym yyy_zzz_seq for yyy.zzz;
然后您应该能够在触发器中引用同义词:
SELECT yyy_zzz_seq.NEXTVAL INTO AAA FROM DUAL
关于database - 架构名称与表名称 - 如何避免冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564928/