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_taxes
?ON DELETE CASCADE
我只是很難解釋它。
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_taxes
?ON DELETE CASCADE
我只是很難解釋它。
是的,但是您是否真的需要物理刪除該條目。有時候,最好在根實體中設置某種標誌,告訴它是否應該作爲刪除/過濾
因爲?如果是這種情況,您可以使用'ON CASCADE RESTRICT'並將其設置在另一個表中。如果有人主動設置刪除,顯然不是操作,那麼完全刪除可能是安全的。 – 2011-03-30 22:44:23
因爲報告了分析數據,想象一下,例如,您正在創建訂單並且您有桌面產品。現在訂單是在同一時間發票!保持參考數據非常重要,例如produc.code和name以避免數據冗餘。什麼是產品不再可用於訂購。什麼,你會刪除好的產品?我不這麼認爲;)您仍然需要在發票中使用該名稱和代碼。順便說一句,在許多ORM中,你無法使用數據庫引擎特有的功能來玩這麼簡單的功能。我不希望我的應用程序如此耦合到特定的數據庫引擎 – 2011-07-09 14:11:56
外鍵不是數據庫特定的。大多數ORM支持SQL8標準,其中CASCADE是其中的一部分。我不確定你是否知道他們是數據庫特定的。無論哪種情況,即使您設置了一個標誌,您也應該使用RESTRICT,以防止某個不熟悉系統的人從「父表」中刪除ID,同時「歸檔」的訂單仍然存在。 – 2011-07-12 22:29:40
是的,那究竟是什麼意思 – iluxa 2011-03-30 22:30:42