2011-03-30 131 views
1
ALTER TABLE `phppos_items_taxes` 
ADD CONSTRAINT `phppos_items_taxes_ibfk_1` 
FOREIGN KEY (`item_id`) 
REFERENCES `phppos_items` (`item_id`) 
ON DELETE CASCADE; 

這是否表示刪除phppos_items.id時,會刪除phppos_items_taxesON DELETE CASCADE

我只是很難解釋它。

+6

是的,那究竟是什麼意思 – iluxa 2011-03-30 22:30:42

回答

1

是的,但是您是否真的需要物理刪除該條目。有時候,最好在根實體中設置某種標誌,告訴它是否應該作爲刪除/過濾

+0

因爲?如果是這種情況,您可以使用'ON CASCADE RESTRICT'並將其設置在另一個表中。如果有人主動設置刪除,顯然不是操作,那麼完全刪除可能是安全的。 – 2011-03-30 22:44:23

+0

因爲報告了分析數據,想象一下,例如,您正在創建訂單並且您有桌面產品。現在訂單是在同一時間發票!保持參考數據非常重要,例如produc.code和name以避免數據冗餘。什麼是產品不再可用於訂購。什麼,你會刪除好的產品?我不這麼認爲;)您仍然需要在發票中使用該名稱和代碼。順便說一句,在許多ORM中,你無法使用數據庫引擎特有的功能來玩這麼簡單的功能。我不希望我的應用程序如此耦合到特定的數據庫引擎 – 2011-07-09 14:11:56

+1

外鍵不是數據庫特定的。大多數ORM支持SQL8標準,其中CASCADE是其中的一部分。我不確定你是否知道他們是數據庫特定的。無論哪種情況,即使您設置了一個標誌,您也應該使用RESTRICT,以防止某個不熟悉系統的人從「父表」中刪除ID,同時「歸檔」的訂單仍然存在。 – 2011-07-12 22:29:40