带有参数的列postgres函数的默认值[英] Default value for column postgres function with argument

本文是小编为大家收集整理的关于带有参数的列postgres函数的默认值的处理方法,想解了带有参数的列postgres函数的默认值的问题怎么解决?带有参数的列postgres函数的默认值问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个带有一个参数postgres 函数.我想将此函数设置为列的默认值,但我不确定如何将参数传递到表定义中.

这就是我的意思,我在表格中有两列如下所示:

trade_id INTEGER NOT NULL
group_id INTEGER DEFAULT trade_id_f(argument_goes_here);

我想让 group_id 的 DEFAULT 值成为 trade_id_f(trade_id) 的返回值,其中 trade_id 是要插入的记录的 trade_id.

我对所有 postgres 函数都不熟悉,这可能吗?

推荐答案

很遗憾,您不能这样做,因为(对于 文档):

<块引用>

值是任何无变量的表达式(子查询和对当前表中其他列的交叉引用不允许).

您可以使用触发器,例如:

create table the_table (
    trade_id int not null,
    group_id int);

create or replace function trade_id_trigger ()
returns trigger language plpgsql as $$
begin
    new.group_id:= new.trade_id+ 1;
    return new;
end $$;

create trigger trade_id_trigger
before insert or update on the_table
for each row execute procedure trade_id_trigger();

insert into the_table values (1,1);

select * from the_table;

 trade_id | group_id
----------+----------
        1 |        2
(1 row)

本文地址:https://www.itbaoku.cn/post/1763769.html