我有超過100個表。用戶表是其中之一。用戶與多個表相關。如果我要刪除一個用戶,我需要檢查其他表中存在的任何用戶表引用。所以我需要獲得其他表中存在的外部關係的數量。附加用戶將存儲在另一個表中。所以參考的數量超過1,那麼我不應該刪除。另一個表中存在引用的數量 - PostgreSQL
我正在使用PostgreSQL。我認爲這可能在MySQL中。我不知道Postgresql,因爲我是PostgreSQL的新手。
在此先感謝。
我有超過100個表。用戶表是其中之一。用戶與多個表相關。如果我要刪除一個用戶,我需要檢查其他表中存在的任何用戶表引用。所以我需要獲得其他表中存在的外部關係的數量。附加用戶將存儲在另一個表中。所以參考的數量超過1,那麼我不應該刪除。另一個表中存在引用的數量 - PostgreSQL
我正在使用PostgreSQL。我認爲這可能在MySQL中。我不知道Postgresql,因爲我是PostgreSQL的新手。
在此先感謝。
當你定義你的外鍵時,你可以給它一個限制刪除的選項,如果任何其他表仍然有一個鍵。下面是從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)
);
放置例如begin exception
塊中的每個刪除內部循環和使用錯誤狀態 - restrict_violation
:
...
loop
begin
delete ... where id = 1;
exception
when restrict_violation then null
end;
end loop;
這種方式與外國關係的用戶不會被刪除,其他沒有意志。
如果存在引用,則不應刪除。所以我需要刪除沒有任何參考的記錄。 – Shankar 2013-05-10 07:26:25
是的,ON DELETE RESTRICT將防止該行被刪除。 – 2013-05-10 07:44:41