You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GeneXus中通过Procedure删除含子级的Transaction记录

问题:GeneXus中如何通过Procedure删除包含子级的Transaction记录

我尝试通过Procedure删除Repair Transaction中的记录时,因该Transaction包含名为Kind的子级,触发了SQL错误。我也尝试过先删除子级记录再删除主级记录,但GeneXus无法识别该对象为Transaction或Transaction层级。


解决方案

前置检查

首先确认你在GeneXus的事务定义中已经完成主从层级配置:Kind事务的主键必须包含Repair事务的主键字段,且在Repair事务的结构树中可以看到嵌套的Kind子级,否则GeneXus无法识别二者的关联关系,会触发外键约束类SQL错误。不要自己写原生SQL删除主/子级记录,否则GeneXus感知不到事务关联,也容易触发同类报错。

正确Procedure操作步骤

  • 先定义主记录主键变量,比如&TargetRepairId,赋值为你要删除的Repair记录的主键值
  • 按照如下语法编写删除逻辑:
// 定位到要删除的主记录
FOR EACH Repair WHERE RepairId = &TargetRepairId
    // 自动删除当前主记录关联的所有子级Kind记录,无需额外加筛选条件
    DELETE Kind
    // 子级全部删除后再删除主记录
    DELETE Repair
ENDFOR
// 操作完成后必须提交事务
COMMIT
  • 执行完成后可通过GeneXus自带的事务浏览工具验证主、子级记录是否都被正常清除

异常排查

如果按照上述步骤操作仍提示无法识别事务层级,先执行「重新生成所有关联对象」操作,清除GeneXus本地缓存后再重新编译部署即可解决。


内容的提问来源于stack exchange,提问作者John Russel Punio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:24:01