database - 架构名称与表名称 - 如何避免冲突?

标签 database oracle namespaces schema

我要使用 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/

相关文章:

java - 如何为数据和索引指定单独的表空间?

C++ 我应该完全限定我的变量类型吗?

hadoop - HDFS 文件系统命名空间

mysql - RoR 使用 2 个不同的数据库和事件记录适配器?相同的表名

php - 试图理解为什么要使用这种类型的数据库设置

database - 我应该在单独的表中跟踪递增的 AccountNumber 吗?

python - 使用 python 将查询结果打印到管道分隔文件

c# - System.Data.OracleClient 不适用于 64 位 Oracle 客户端

ios - iOS中不同位置的商店数据库有什么区别?

javascript - var myObj = myObj || 有什么好处{ } 当 myObj 已经存在时?