hstore在postgresql函数的妙用

    last_vals :='';   -- 旧值,text

-- 保存旧数据,备修改后对照查询

      with h as (select id,... from aa  where ...)
    ,h1 as (select id,... from h)  -- 过滤查询1
    ,h2 as (select from h1)  --处理
    select  array_agg(hstore(h2))::text into last_vals from h2;  -- 转换成text临时保存
    
    raise notice 'last=%',last_vals::text;
  

       --- 此处是若干更新操作  


  -- 对照旧数据,更新记录        
    with h as (select last_vals as vals)
    ,h1 as (select unnest(vals::hstore[]) val from h)  -- 转换成hstore
    ,h2 as (select res.* from h1,populate_record(null::aa,h1.val) res) -- 将text转换成 record set, aa 为表名
    ,h3 as (select ...... from h2 , aa  where ...)   -- 继续查询
    ,up as (update aa d set  ... from h3 where ... returning ...) -- 更新
    select array_agg(hstore(up))::text into last_vals from up;

    raise notice 'new=%',last_vals::text;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值