小编典典

从联接表中删除ADODataSet

sql

我有一个Delphi应用程序,其中显示了像这样的查询已玩过的游戏的列表:

select  g.*, gt.id, gt.descr 
from GAMES g 
inner join game_types gt on gt.id = g.game_type
order by game_date DESC

当我单击DBNavigator中的删除按钮时,也会删除game_types表中的联接记录。这是一个问题,因为许多其他游戏可以是同一类型。

我需要做些什么才能删除游戏,而不删除游戏类型?


阅读 149

收藏
2021-03-23

共1个答案

小编典典

您需要使用“唯一表”动态属性

ADOQuery1.Properties['Unique Table'].Value := 'GAMES';

MSDN ADO文档

如果设置了“唯一表”动态属性,并且Recordset是对多个表执行JOIN操作的结果,则Delete方法将仅从“唯一表”属性中命名的表中删除行。

2021-03-23