pg 自定义函数

有时我们在数据库更新数据操作中会遇到一些比较复杂的语句,而不是简单的update xxx set xx = aa where ...

我们遇到的可能是在数据库中更新一列数据,并且是从给定值中选随机值插入,此时普通更新语句已经满足不了我们的需求了。那么自定义函数就帮了大忙。

1、场景假设:标签表中我们要增加一列叫color,并且给现在已经存在的标签随机添加颜色值(所有颜色值已经给定)。首先我们要写一个自定义函数getRandomColor,用来获取随机颜色值:

drop function getRandomColor;
create or replace function getRandomColor()
    returns varchar
as
$$
declare
    color varchar;
    colors varchar[];
    num int;
begin
    colors := array ['#1', '#2', '#3',
                     '#4', '#5', '#6'];
    num := floor(random()*(6-1)+1);
    color := colors[num];
    return color;
end ;
$$ language plpgsql;

由于我要反复测试多次 所以第一句我加了一个删除方法。然后颜色值我也固定6个并且用“#123456”来代替方便区分,并不是真的颜色值。

2、函数写好后自然是怎么调用,那么很容易,我们直接在sql语句中使用方法名即可:

update train_task_tag set color = getRandomColor() where id in ('TTAGa49ef38611eca7b1b63e34a44cb5', 'TTAG46eaf38911eca7b1b63e34a44cb5');

3、效果查看:

修改前:

修改后: 

 OK,大功告成!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值