2017-06-23 33 views
2

我有2個表:對象更改時是否需要重新創建Oracle同義詞?

  • 表1利用同義詞模式:userA.table1userB.table1
  • 表2

我已經使用:

  • ALTER TABLE table1重命名爲table1_old;
  • ALTER TABLE table2 RENAME TO table1;

有必要重新創建同義詞與刪除,創建,替換SQL語法或可以安全地使用同義詞,不要重新創建嗎?

+1

詢問'user_synonyms'或'all_synonyms'告訴你什麼?那些查詢同義詞的用戶會發現什麼 - 除非兩個表中的數據都是相同的,是不是告訴你哪個表正在被查看? (這也與PL/SQL無關......) –

+0

我試過查詢all_synonyms並且沒關係。表可以用userA userB查詢它。謝謝! – Catalin

+1

我不知道爲什麼,但過去遇到同義詞不能在對基礎對象進行更改時發生問題的原因。出於這個原因,當我以這種方式改變表格時,我重新創建了同義詞。 – BriteSponge

回答

2

不,如果底層對象發生變化,則不需要重新創建同義詞。

在Oracle重新驗證它們之後,它們將被暫時標記爲「無效」,最終會自動完成 - 儘管手動重新驗證它們通常是一個好主意(爲了檢查它們仍然可用)。

ALTER SYNONYM usera.table1 COMPILE; 
ALTER SYNONYM userb.table1 COMPILE; 
相關問題