【问题标题】:ADODataSet deleting from joined tableADODataSet 从连接表中删除
【发布时间】:2011-11-02 14:09:20
【问题描述】:

我有一个 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 表中的连接记录也被删除。这是一个问题,因为许多其他游戏可能属于同一类型。

我需要怎么做才能只删除游戏而不删除游戏类型?

【问题讨论】:

    标签: sql delphi delphi-2009 ado tadodataset


    【解决方案1】:

    你需要使用Unique Table动态属性

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

    来自MSDN ADO Documentation

    如果设置了 Unique Table 动态属性,并且 Recordset 是 在多个表上执行 JOIN 操作的结果,然后 Delete 方法只会从以 Unique 命名的表中删除行 表属性。

    【讨论】:

    • 如果您需要真正了解您的更新,您可以使用 TUpdateSQL 组件并将其分配给查询组件的 UpdateObject。
    【解决方案2】:

    您需要在打开数据集后设置 TADODataset 的“唯一表”属性。

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

    【讨论】:

      猜你喜欢
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多