[英]Foreign key reference to table in another schema
我試圖在我的一個表上創建一個外鍵,引用不同模式中的表的列。
類似的東西:
ALTER TABLE my_schema.my_table ADD (
CONSTRAINT my_fk
FOREIGN KEY (my_id)
REFERENCES other_schema.other_table(other_id)
)
由於我獲得了必要的資助,所以效果很好。
現在我想知道是否有理由不引用不同模式中的表,或者有什么需要注意的地方?
這樣做沒有問題。 在表之間建立外鍵關系時,模式確實沒有影響。 只需確保合適的人員擁有您打算使用的架構所需的權限。
如果您所在的組織中不同的人對不同的模式擁有權限,我認為讓其他模式能夠禁用甚至刪除並重新創建您的約束是一種很好的做法。
例如,他們可能需要刪除或截斷他們的表,然后重新加載它以處理一些(非常奇怪的)支持問題。 除非您想在半夜接到電話,否則我建議讓他們能夠暫時解除您的限制。 (我還建議您設置自己的警報,以便您知道是否有任何外部約束被禁用或刪除)。 當您跨越組織/模式界限時,您希望與他人相處融洽。 Vincent 提到的索引是其中的另一部分。
這將完全作為引用其自己模式中的表的外鍵。
與常規外鍵一樣,如果父鍵被更新或從父表中刪除條目,不要忘記索引my_id
(未索引的外鍵可能是大量爭用的來源,無論如何索引通常很有用)。
我遇到的唯一問題是確保權限存在於另一個架構上。 通常的事情 - 如果這些權限因任何原因消失,你會聽到它。
這可能導致問題的原因之一是您需要小心地以正確的順序刪除內容。 這可能是好是壞,這取決於在您的表中永遠不要有孤兒的重要性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.