现有两个表,分别为:
list:存储文件状态。
file:存储文件信息。
使用 list.flowId = file.ownerId 进行关联。
两者关系 :1(list)--> N (file)
如果上传文件后,文件信息存入 file 表,并改变 list 表中文件存在标志位的值,置为“1”。现遇到情况:
如果发现 file 表中记录的文件和本地文件不符,需要删除表中记录,并且需要将 list 表中的文件存在标志位置为“0”。现寻求解决方案。

解决方案 »

  1.   

    觉得你设计表不合理,LIST标志位,没什么用,LIST与FILE表是1对N关系,上传1个文件标志是1,上传10个文件也是1,删除1个文件还是1,删除所有才为0
      

  2.   

    不需要在list表中使用专门字段来描述,只要在需要这个信息时,使用case when exists (select 1 from file where ...) then 1 else 0 end 来即时获取就可以了
      

  3.   

    能说一下具体的sql语句吗?感谢
      

  4.   

    sql类似如下形式:
    select a.*,case when exists (select 1 from file where ownerid=a.flowid and hasfile=1) then 1 else 0 end as hasfile
      from list as a
    结果集是比list表多出一个hasfile列,这一列是查询中临时计算生成的,并未在数据库中存储
    当然,具体的数据库,sql方言有些区别,不是拿来就能用的,大概的思路是这样的!