2013-05-10 17 views
0

我有超過100個表。用戶表是其中之一。用戶與多個表相關。如果我要刪除一個用戶,我需要檢查其他表中存在的任何用戶表引用。所以我需要獲得其他表中存在的外部關係的數量。附加用戶將存儲在另一個表中。所以參考的數量超過1,那麼我不應該刪除。另一個表中存在引用的數量 - PostgreSQL

我正在使用PostgreSQL。我認爲這可能在MySQL中。我不知道Postgresql,因爲我是PostgreSQL的新手。

在此先感謝。

回答

3

當你定義你的外鍵時,你可以給它一個限制刪除的選項,如果任何其他表仍然有一個鍵。下面是從postgres manual

CREATE TABLE order_items (
    product_no integer REFERENCES products ON DELETE RESTRICT, 
    order_id integer REFERENCES orders ON DELETE CASCADE, 
    quantity integer, 
    PRIMARY KEY (product_no, order_id) 
); 
+0

如果存在引用,則不應刪除。所以我需要刪除沒有任何參考的記錄。 – Shankar 2013-05-10 07:26:25

+0

是的,ON DELETE RESTRICT將防止該行被刪除。 – 2013-05-10 07:44:41

0

放置例如begin exception塊中的每個刪除內部循環和使用錯誤狀態 - restrict_violation

... 
    loop 
     begin 
      delete ... where id = 1; 
     exception 
      when restrict_violation then null 
     end; 
    end loop; 

這種方式與外國關係的用戶不會被刪除,其他沒有意志。

相關問題