【问题标题】:Do Oracle synonyms need to be recreated when the object changes?对象更改时是否需要重新创建 Oracle 同义词?
【发布时间】:2017-06-23 09:13:22
【问题描述】:

我有 2 张桌子:

  • table1 同义词架构:userA.table1userB.table1
  • table2

我用过:

  • ALTER TABLE table1 重命名为 table1_old;
  • ALTER TABLE table2 重命名为 table1;

有必要使用 drop、create、replace SQL 语法重新创建同义词,还是按同义词安全使用而不重新创建?

【问题讨论】:

  • 查询user_synonymsall_synonyms 告诉你什么?查询这些用户所揭示的同义词会带来什么 - 除非两个表中的数据相同,否则这不会告诉您正在查看哪个表吗? (这也和PL/SQL无关……)
  • 我已经尝试查询 all_synonyms 并且没问题。表可以用userA userB查询。谢谢!
  • 我不知道原因,但我过去曾遇到过同义词在对基础对象进行更改时不起作用的问题。因此,当我以这种方式更改表时,我会重新创建同义词。
  • 感谢您的回复!

标签: sql oracle rename


【解决方案1】:

不,如果基础对象发生变化,您无需重新创建同义词。

它们将被暂时标记为“无效”,直到 Oracle 重新验证它们,最终将自动完成 - 尽管手动重新验证它们通常是个好主意(以检查它们是否仍然正常)。

ALTER SYNONYM usera.table1 COMPILE;
ALTER SYNONYM userb.table1 COMPILE;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多