例如,如果关系数据库有一个表Suppliers
,其中的值Suppliers.ID
用于其他表的列中,例如Invoice.Supplier
,如果用户想要“从系统中删除供应商 15”会发生什么?
问问题
2014 次
3 回答
2
如果表Supplier 15
中有记录Invoice
。rdbms 将引发引用完整性错误,因为Supplier 15
它是相关的并且在其他表中有记录。
处理这种删除将取决于您的业务规则。是否应该先删除相关记录,或者如果记录在其他表中使用,您可以阻止用户删除该记录。
于 2013-02-08T02:11:30.250 回答
0
这取决于 Invoice 和 Supplier 之间关系的性质:
没有供应商可以存在发票吗?如果可以,您可以决定取消所有引用已删除供应商的列。如果不能,您可以决定删除属于已删除供应商的发票(如果您可以将发票视为供应商对象的子对象),或者您可以阻止删除供应商因为有任何发票提到它。
于 2013-02-08T02:14:21.577 回答
0
详细说明@DanBracuk 的评论。
在表中添加一列InActive bit NOT NULL DEFAULT 0
。
当您“删除”该供应商时,将其设置为 1 并且不再在您的用户界面中显示它,除非在供应商的主列表中,以便可以重新打开
大多数商业会计软件包都使用类似的东西,在大多数情况下,如果您知道非活动供应商的名称,您可以将其输入下拉列表(并且将被接受),但它不会出现在下拉列表中。
于 2013-02-08T03:39:33.387 回答