求一问题解决方案
多表关联,更新主表提示键列信息不足
大致情况:
一 主表
id 客户代码 删除标志 选中标志
E4AB44D4572DB4469043A520F5583491 1 0 0
F43CFD285DD5644C93EF90CEDF016C3D 1 0 0
从表
id 主表id bugid
1 E4AB44D4572DB4469043A520F5583491 1(代表1号缺陷)
2 E4AB44D4572DB4469043A520F5583491 2(代表2号缺陷)
3 E4AB44D4572DB4469043A520F5583491 3(代表3号缺陷)
二:现对从表进行行列互换,代码为:
对应sql:select 主表id,max(case bug_id when '1' then '有' end) as bug1,max(case bug_id when '2' then '有' end) as bug2,max(case bug_id when '3' then '有' end) as bug3 from Opt_Bug_Infos group by 主表id
形成以下查询结果:
id 主表id bugid1(是否有一号缺陷) bugid2 bugid3
1 E4AB44D4572DB4469043A520F5583491 有 有 有
2 F43CFD285DD5644C93EF90CEDF016C3D 无 无 无
三 通过主表与从表关联
select * from 主表 a left join (max(case bug_id when '1' then '有' end) as bug1,max(case bug_id when '2' then '有' end) as bug2,max(case bug_id when '3' then '有' end) as bug3 from Opt_Bug_Infos group by 主表id ) k on a.id=k.主表id
能正常查询出结果,但当查询后对主表进行更新操作后,出现键列信息不足
所有的数据是在dbgrid里显示的,主表的checked属性代表该条记录是否被选中后更新,采用的是adoupdatebatch提交方式,当选中记录执行更新操作就出现该错误提示
主表跟从表都有主键的