postgres 踩坑记录

190 阅读1分钟
  • in 条件内如果是一个 select 子查询, 子查询内字段报错时, 整个语句还是会执行成功, 并且相当于 in 条件不存在, 如:
    当下列子语句中 plan_id 不存在时, 整个语句不会报错, 而且会把所有operation.sub_plan_target的 is_delete 置为1
   update operation.sub_plan_target set is_delete=1, update_time=? where is_delete=0 plan_id in (  
       select plan_id from operation.sub_plan where business_id=?  
   )
  • 排序, 如果碰到排序字段相同的记录, 在不同的 offset 下返回的顺序不一致
  • 关于自增 id, 执行 insert on conflict (xx) do update 语句会导致 seq 值增长