hstore在postgresql函数的妙用

这段代码展示了如何在 PostgreSQL 中保存旧数据,进行一系列查询和更新操作,并对比更新前后的记录值。通过with语句和CTE(公共表表达式)进行数据处理,包括hstore转换和recordset操作,确保数据一致性。
摘要由CSDN通过智能技术生成

    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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值