gpt4 book ai didi

oracle - 如何正确地制作公共(public)同义词

转载 作者:行者123 更新时间:2023-12-04 02:59:29 27 4
gpt4 key购买 nike

这是一个非常愚蠢的问题,但我需要帮助。

我有一张 mydbowner 拥有的 table 。它被命名为 mydbowner.mytable。我试图通过发出命令来创建一个公共(public)同义词:

为 mydbowner.mytable 创建或替换公共(public)同义词 mytable;

当我这样做时,我查询得到的表:

ORA-01775: 同义词循环链

我如何在没有问题的情况下制作这个同义词。

最佳答案

我认为贾斯汀走在正确的轨道上。我认为这实际上意味着 mydbowner.mytable 不存在。

这是一个例子:

SQL> conn mbobak
Enter password:
Connected.
SQL> drop table mytable;
drop table mytable
*
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> create public synonym mytable for mbobak.mytable;

Synonym created.

SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms

我认为发生的事情是 Oracle 试图解析 mytable,mbobak 模式中没有 mytable,所以它在 PUBLIC 中查找它,找到它,并看到它指向 mbobak.mytable。但是,mbobak.mytable 不存在,因此,它在 PUBLIC 中查找 mytable,并且存在循环。

事实上,如果你创建 mytable,错误就会消失:
SQL> create table mytable as select * from dual;

Table created.

SQL> select * from mytable;

D
-
X

1 row selected.

SQL> drop table mytable;

Table dropped.

SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms

是的,我意识到这并不完全有意义,因为一旦公共(public)同义词解析为 mbobak.mytable,并且没有找到,在我看来,它应该返回错误 ORA-942“表或 View 不存在",这对我来说更有意义。

但是,这似乎是它的工作方式。

量子点

希望有帮助。

关于oracle - 如何正确地制作公共(public)同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com