填报设置联合主键提交出现奇怪的问题

已经在填报属性设置了联合主键,在数据库中也设置了联合主键,同样的两个键的两条数据在帆软中居然能提交成功,但是数据库里却有一条记录的InvoiceNum为空,这是怎么回事


FineReport kyugeegee 发布于 2020-7-15 11:42
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
吾姓独孤Lv6高级互助
发布于2020-7-15 11:45(编辑于 2020-7-15 11:47)

联合主键保证唯一性啊,你看你的3条数据,俩条一样的,一条为空所以是俩条记录,一个158,一个为空,正常的image.png

俩个一样的数据保存成功是因为他执行了俩次,只是结果一样而已,只对那一条记录更新了俩次

  • kyugeegee kyugeegee(提问者) 那为啥不会报错呢,明明两条记录的键是一样的
    2020-07-15 13:35 
  • 吾姓独孤 吾姓独孤 回复 kyugeegee(提问者) 为啥要报错?你sql去更新俩次数据你sql会报错吗?只是俩次数据更新的结果一样啊,sql你update一条记录,你更新俩次也不会报错啊,不保错才是正常的逻辑啊
    2020-07-15 14:16 
  • 吾姓独孤 吾姓独孤 回复 kyugeegee(提问者) 你如果是说插入的话你就要做校验了,用sql去查询对应的联合主键在数据库是否有记录,但是更新是不需要报错的,而且看你这个俩个字段做联合主键应该不够吧,同一个合同编号同一个发票号码下的数据应该只有一条,你数据有俩条了肯定确定不了是哪一条数据,应该还得有另外的主键,设计来说,主键必须满足唯一性,就是你选择的联合主键字段必须保证确定了这些字段对应的数据就只能有一条的
    2020-07-15 14:22 
  • 吾姓独孤 吾姓独孤 回复 kyugeegee(提问者) 如果你是按你们业务系统来设计的,你要考虑你业务系统的表结构,很大可能是一个表头对应多个表体,他们都有自己的主键,只是系统上面显示不出来,你看不到而已,那个主键才是真正的主键,如果简单的使用几个字段作为联合主键是很有可能和业务系统的数据匹配不上的
    2020-07-15 14:25 
  • kyugeegee kyugeegee(提问者) 好的,谢谢
    2020-07-15 15:01 
  • 2关注人数
  • 584浏览人数
  • 最后回答于:2020-7-15 11:47
    请选择关闭问题的原因
    确定 取消
    返回顶部