Apple 的文档Relationship Delete Rules简单明了。但它只谈论一对多关系(一对一关系的删除规则很容易推断)。尚不清楚这些规则对多对一 关系意味着什么。因此,让我们在这里澄清一下。
我们使用 Apple 文档中使用的 Employees-Department 示例。尽管这些适用于员工-部门 关系的规则在现实生活中的含义可能很荒谬,但作为程序员,我们在这里仅讨论它们的逻辑含义。
拒绝
如果关系目标处有对象,则无法删除源对象。比如你要删除一个员工,不管他所在的部门是否还有其他员工,你都必须保证先删除该部门,否则无法删除该员工。
无效化
从目标对象的反向关系中删除源对象。 (见@bshirley的简明解释)例如,如果您删除一个员工,则将他从他所在部门的员工关系中移除。这仅在部门的剩余员工数量大于所需的最小数量时才有意义,或者如果您确保在下一次保存操作之前为部门添加新员工。
[问题:如果是最后一个员工,部门的员工关系会变成空集还是null?]
(@TechZen 回答:一对多关系总是返回一个集合对象。它永远不会为零。如果关系的另一端没有对象,则集合为空。)级联 删除关系目标处的对象。
比如删除一个员工,同时删除他所在的部门,即使该部门还有其他员工。
(使用注意事项:它通常会导致“整个对象图中的菊花链删除”,如@TechZen 在其示例中所述。)
无 Action
不对关系目标处的对象执行任何操作。例如,如果您删除了一名员工,请让他的部门保持原样,即使它仍然认为它拥有该员工。
多对多关系的删除规则的含义可以从这里推断出来。
最佳答案
这些是所有关系(不是属性)的删除规则。它们适用于对一或对多关系。
Nullify - 如果您删除一名员工,则反向关系设置为nil,如果它是 1 对 1,那么从字面上看,在这种情况下,部门的员工将减少一个
级联 - 如果您删除一名员工,其所属部门也将被删除。该部门将遵循其所有属性的删除规则,1)如果员工删除规则是级联,则所有员工都将被此操作删除; 2)如果员工删除规则为Nullify,所有员工将被“搁浅”,没有部门
关于ios - 删除多对一关系的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587304/