簡體   English   中英

更新子表行時是否檢查外鍵約束?

[英]Are foreign key constraints checked when child table row is updated?

使用 PostgresSQL 文檔中的示例,其中orders.product_no引用外鍵products.product_no 考慮對“子表” orders進行以下更新:

  1. UPDATE orders SET product_no = 'new_no', quantity = 'new_quantity'
  2. UPDATE orders SET quantity = 'new_quantity'

這兩個命令是否發生product_no外鍵約束? 直覺上,我猜1的答案是 Yes, 2的答案是 No。 但是,我找不到明確提及這一點的文檔。

這個問題的動機是我們有一個帶有一些外鍵約束的大表,並且行經常更新(不會觸及具有約束的列)。 我們想知道放棄外鍵約束是否有助於加快更新速度。

永遠,永遠不要在運行時間縮短幾毫秒的情況下刪除外鍵。 FK 是您維護數據完整性的方式,這比減少運行時間重要得多。 在這種情況下,它不會有任何影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM