无主键表的多sheet提交问题

业务场景:

  1. 新增一张填报表,生成表ID。如:个人信息表 ID=123456789

  2. 填报表中包含一张可添加删除行的子表。如:工作经历表,包含起止日期,工作经历,职务,备注和表ID(对应个人信息表ID) 字段。此处ID不为空。

问题:

若在填报时,在填报属性中设置ID为主键,那么新增的数据会覆盖原有数据,查询仅保留一条。

若填报属性中不添加主键,若原来有数据,那么新增、删除和修改都会保留原数据,并新增操作之后的数据。

  1. 目前的方法是在校验提交前将该表中此ID的数据清空,并重新插入。测试提交时只提交当前sheetA,但是在测试另一sheetB提交后,同样触发了删除事件,但sheetA的数据没有入库。

FineReport 廿旧 发布于 2020-8-25 16:15
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
fofantasyLv5初级互助
发布于2020-8-25 16:37

哈哈,这个问题很简单

1、新建的时候,表体主键是空的,会插入新数据;

2、修改或删除的时候,这里就有表体主键了,这时候就会update了

image.png

  • 廿旧 廿旧(提问者) 尝试过,行不通。因为在工作经历表里,多条记录对应一个个人信息表ID,如果以ID为主键,那会因为主键重复,之后的数据会把其他数据覆盖掉。
    2020-08-25 16:49 
  • fofantasy fofantasy 回复 廿旧(提问者) 工作经历填报时,不要设置成人物ID,是放一个隐藏列(工作经历表的主键),新建的时候是空的,修改的时候就有值了。
    2020-08-25 16:52 
  • fofantasy fofantasy 回复 廿旧(提问者) 哥们,看来你没看懂我上面发的截图例子。
    2020-08-25 16:52 
  • 廿旧 廿旧(提问者) 在这张工作经历表里ID的作用是根据传递过来的参数用于取数的,ID并不作为主键。
    2020-08-25 16:53 
  • fofantasy fofantasy 回复 廿旧(提问者) 工作经历表 这个明细表(多行)不是有自己的唯一主键嘛,,,
    2020-08-25 16:55 
最佳回答
0
孜云Lv5初级互助
发布于2020-8-25 17:09

在加一个字段,UUID,作为主键,如果是新生成就给UUID,如果不是新的就读取这个UUID就行了

给那个字段的位置设置条件属性如果 LEN($$$)=0 就给新值 UUID()

最佳回答
0
廿旧Lv5见习互助
发布于2020-8-27 15:30

总结一下:

在建表时,添加一项UUID(无实际含义,仅做主键便于删除更新操作),

查询得到的UUID存放在C2,其他字段存在A2,B2用公式生成UUID,在插入策略中,B2选择原值,C2左父格自定义为A2

//C2查询有结果时,显示C2,否则视为新增,生成32位UUID
IF(ISNULL(C2),UUID(32),C2)

报表填报时,新增时UUID选择B2作为主键,添加提交条件

ISNULL(C2)

更新和删除操作时,实际操作中发现,若依然以B2为主键的话,会导致删除操作失效,提交后数据仍存在,(怀疑是因为B2不是数据查询出来的原因,求解答)。此时选择C2作为主键添加提交条件

ISNULL(C2)=FALSE


  • 2关注人数
  • 422浏览人数
  • 最后回答于:2020-8-27 15:30
    请选择关闭问题的原因
    确定 取消
    返回顶部