删除记录而不删除另一个 Access 表中的相关记录

Posted

技术标签:

【中文标题】删除记录而不删除另一个 Access 表中的相关记录【英文标题】:Deleting a record without deleting related records in another Access table 【发布时间】:2014-01-10 13:30:19 【问题描述】:

我在 Access 2007 中启用了参照完整性。我想从客户表中删除一条客户记录,但想将该特定客户的相关账单详细信息保存在另一个名为账单表的表中。当我尝试删除客户记录时,我收到一条错误消息:“无法删除或更改记录,因为表 'bill' 包含相关记录”。

【问题讨论】:

我不知道你们的业务规则,但删除包含账单明细的客户记录似乎显然是错误的。客户表中的标志字段如何将客户标记为逻辑删除? 我正在开发一个“健身房管理系统”。当客户停止服务时,我想删除个人数据,而不是他的收据/账单支付详细信息。 然后删除级联关系delete。这仍然是不合逻辑的。如果可以按照您的要求完成,您如何知道这些帐单详细信息指的是哪个客户? 是的,史蒂夫不合逻辑。但是非常感谢我可以使用标志字段方法。 【参考方案1】:

您不能同时拥有这两种方式:您可以强制执行参照完整性,也可以允许在删除父记录时创建孤立的子记录(即,通过禁用参照完整性的强制执行)。

正如对您问题的评论中提到的,您可以将名为 [Inactive] 或 [Deleted] 的 Yes/No 字段添加到父表,然后使用仅考虑“活动”父表的查询记录,例如

SELECT * FROM [Customer] WHERE NOT [Inactive]

另一种可能性是有一个单独的“存档”数据库来存储已删除的项目。您将所有相关记录(父项和子项)复制到存档数据库,然后从主数据库中删除它们(先是子项,然后是父项)。

【讨论】:

以上是关于删除记录而不删除另一个 Access 表中的相关记录的主要内容,如果未能解决你的问题,请参考以下文章

为啥access数据表中有一条记录不能修改

删除父子记录而不使用删除级联

删除触发器并从另一个表中获取字段

怎么删除ACCESS中的重复记录 只保留一条

从多个 Access 表中删除记录

如何在 Access 中使用来自另一个表的联接从一个表中删除项目?