订单表与订单明细表填报时,对应关系错乱问题

订单表A: id 为bigint 类型自动递增, 订单明细表B中的receipt_id 字段取表A的 id 值,使订单与订单明细作对应,现在填报提交分两个内置SQL进行,先提交表A,再提交表B,如何避免多人同时操作填报而使 receipt_id 产生错乱呢?006.png

FineReport 用户RzfYB0094268 发布于 2022-7-4 12:50
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户RzfYB0094268Lv4见习互助
发布于2022-7-7 09:35

查了很多资料,找不到办法,可能帆软填报提交,用这种id 递增的方法没法解决这个问题,只能更改表的数据结构了,把id更改为字符类型,用 uuid() 取值填报。

最佳回答
0
好好生活好好学习Lv7资深互助
发布于2022-7-4 12:53

填报属性是按照顺序执行的

  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 顺序没有问题,问题是多人同时操作时,由于一个提交只完成了一半,另一个人又插了个新提交进来,造成了receipt_id 取值错误问题 , id 和 receipt_id 是用 max(id)+1 的方式取值的。
    2022-07-04 12:58 
  • 好好生活好好学习 好好生活好好学习 回复 用户RzfYB0094268(提问者) 那你只能设置主键了,主键有的修改内容,没有的新增
    2022-07-04 12:59 
  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 回复 好好生活好好学习 如果没有多人同时操作填报,我上面的做法是没有问题的,可以对应得上,但是多人同时操作填报,就可能会产生receipt_id 取值错误了
    2022-07-04 13:06 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-4 13:09

多人同时填报的时候。生成的id。不要想着用公式生成的id去解决。这样是不行的。你必须得用数据库的功能让它自动生成id..

mysql自增id:mysql如何设置自增长id-mysql教程-PHP中文网

sql server自增id:sql server怎么设置id字段自增-百度经验 (baidu.com)

oracle与db2自增id要借助它的函数:ORACLE中设置ID自增详细_你若不离不弃,我必生死相依的博客-CSDN博客_oracle 自增id

  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 现在不是生成的id 有问题,多人同时填报时,产生 订单表 id 和 明细表的 receipt_id 对应不上的问题
    2022-07-04 14:13 
  • CD20160914 CD20160914 回复 用户RzfYB0094268(提问者) 多人同时填报。你这样取:id 和 receipt_id 是用 max(id)+1 的方式取值的 都说了有问题呀。它是并发的呀。这样完全就错乱了。。
    2022-07-04 14:16 
  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 回复 CD20160914 你还没理解我的问题
    2022-07-04 15:14 
  • 2关注人数
  • 368浏览人数
  • 最后回答于:2022-7-7 09:35
    请选择关闭问题的原因
    确定 取消
    返回顶部