当我们定义外键约束时,我对SQL Server 2008 Management Studio中的更新和删除规则意味着什么感到困惑。我也没有找到相关的帮助文档(例如F1帮助)。
这是屏幕快照。欣赏是否有人可以描述他们的意思,并推荐一些相关文档以供阅读。
外键定义了两个表之间的父子关系。父表中的主键是最多n个子表行中的外键。
现在,如果父表中的主键获得UPDATE,则UPDATE RULE开始。所有子行也都被更新,设置为NULL或其他任何值。但是,最佳实践是拥有一个永不更改的主键(固定ID或其他内容),因此这是次要的规则。
更为重要的是DELETE规则-如果删除父行(例如,删除Order)怎么办?您也可以使用CASCADE DELETE删除所有子行(所有Order行项目),或者可以将其外键设置为NULL(它们不再具有父级),这完全取决于您的具体情况。
在“订单/订单行”方案中,删除完整订单后删除订单行可能非常有用,但是您可能不想删除某个产品,仅因为引用该产品的订单已被删除-没有一个正确的答案- 这取决于您的情况和您的应用程序。
马克