PostgreSQL表依賴性跟蹤

來源:互聯網
上載者:User

標籤:

如果你建立了一個包含許多表,並且帶有外鍵約束、視圖、觸發器、函數等複雜的資料庫結構。那麼你就會在對象之間隱含地建立了一個依賴性的網路。比如,一個帶有外鍵約束的表依賴於它所引用的表。

為了保證整個資料庫結構的完整性,PostgreSQL 保證你無法刪除那些還被其它對象依賴的對象。比如,試圖刪除在裡被訂單表所依賴的產品表是不能成功的,會有類似下面的錯誤訊息出現:

DROP TABLE products;NOTICE:  constraint orders_product_no_fkey on table orders depends on table productsERROR:  cannot drop table products because other objects depend on itHINT:  Use DROP ... CASCADE to drop the dependent objects too.

這個錯誤訊息包含一個有用的提示:如果你不想麻煩的分別刪除所有依賴對象,你可以運行:

DROP TABLE products CASCADE;

然後所有被依賴的對象都將被刪除(並不刪除訂單表,只是刪除外鍵約束)。如果你想檢查DROP ... CASCADE會幹什麼,運行不帶CASCADE 的DROP然後閱讀NOTICE訊息。

PostgreSQL裡的所有刪除命令都支援聲明CASCADE。當然,具體的依賴性實體取決於對象的類型。你也可以寫RESTRICT 而不是CASCADE以擷取預設的行為(防止刪除那些其它對象所依賴的對象)。

注意: 根據 SQL 標準,要求至少聲明RESTRICT或CASCADE中的一個。實際上沒有哪種資料庫系統強制這一點,但是預設的行為是RESTRICT 還是CASCADE則因系統而異。

注意: 在PostgreSQL 7.3之前的外鍵約束依賴性和序欄欄位依賴性在升級過程中都不會得到維護或者建立。所有其它的依賴性類型在從7.3版本以前的資料庫升級過程中都將得到恰當的建立。

PostgreSQL表依賴性跟蹤

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.