Delphi 10 -如何在删除master时自动删除detail记录?

Delphi 10 -how to delete detail records automatically when delete master?

我将 Delphi 10 与 Firedac 一起使用,我在主从配置中有两个 tables,A(Document) 和 B(DocDetail)。在我的表单中,我有两个 DBgrid,分别链接到每个数据源。我想要一个配置,如果可能的话,当我删除主 DBgrid 中相应的主记录时,删除 table DocDetail 中的所有记录项。 table FDTable 组件中是否有执行此类操作的配置?或者还有其他方法可以删除 Delphi 侧的主 - 删除详细信息吗? (我知道可以通过约束删除级联在数据库端完成)。谢谢你的帮助。

您在 TFDQuery 组件上查找的属性是 FetchOptions.DetailCascade and/or FetchOptions.DetailServerCascade

来自 DetailServerCascade

上的帮助

When DetailServerCascade is False, then FireDAC posts client-side cascading changes to the database. The client-side cascading changes are performed when DetailCascade is True. So DetailServerCascade should be used together with DetailCascade.

如果您正在使用 CachedUpdates,您可能还需要一个 TFDSchemaAdapter 组件。此 CentralizedCachedUpdates Sample page 列出了使用缓存更新时设置组件所需的所有步骤。

我在一种形式上使用它,效果很好。正确设置所有内容有点挑剔。基本上,更新中涉及的每个 DataSet 都需要指向一个通用的 TFDSchemaAdapter 组件。然后任何主数据集都需要将其 FetchOptions.DetailCascade 设置为 true 以确保从子数据集中正确删除行