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