【发布时间】:2014-09-27 00:26:27
【问题描述】:
这是我的场景:
架构: USER_1 包装: PKG_1 程序: PROC_1 表: MY_TABLE
架构: USER_2
所以我有两个模式,USER_2 对 USER_1 中的几乎每个表都有同义词,它也有 PKG_1.PROC_1 的同义词,它会更新 MY_TABLE。但是,当为 PKG_1.PROC_1 使用 USER_2 同义词时,过程会从 USER_1 而不是 USER_2 更新表...
我如何对来自同一模式的表进行操作,这些表在另一个模式中执行同义词的过程?
基本上,我希望在 USER_2.MY_TABLE 上实际看到更改,但那里没有进行任何更改...
我是通过 USER_2 完成的:
CREATE OR REPLACE SYNONYM MY_TABLE FOR USER_1.MY_TABLE;
CREATE OR REPLACE SYNONYM PKG_1 FOR USER_1.PKG_1;
EXECUTE PKG_1;
我没有任何错误,甚至DBMS_OUTPUT.PUT_LINE 日志在连接到 USER_2 时也是可见且正确的。但是,假设 PKG_1.PROC_1 会从 MY_TABLE 中删除一条记录,如果我这样做了:
SELECT RECORD FROM MY_TABLE;
使用 USER_2,我可以看到记录没有被删除,但是:
SELECT RECORD FROM USER_1.MY_TABLE;
已删除。
感谢您的宝贵时间!
【问题讨论】:
标签: oracle plsql database-schema database-administration synonym