这是Oracle中用户定义的类型:
TYPE type_daniel IS RECORD(
name varchar(16) := '112',
age int :=12,
sex int :=1
);
我想将其移植到Postgres,但是pg不支持喜欢的语法:
create type type_daniel as (
name varchar(16) := '112',
age int :=12,
sex int :=1
);
我试图用相同的名称和默认值创建一个表:
create table test_daniel(
name varchar(10),
age int,
sex int default 1
);
但是当我在过程中将其用作变量时:
create or replace procedure test_daniel_func() as $$
declare
vrow test_daniel;
begin
vrow.name:='jzy';
vrow.age:=23;
raise notice '%,%',vrow.name,vrow.sex;
end
$$
language plpgsql;
然后我将此过程称为
。我希望输出为jzy,1
,但实际输出为jzy,NULL
。
那么,如何在postgres中设置复合类型属性的默认值?
答案 0 :(得分:0)
除非您用C编写类型,否则我认为您无法做到这一点。
您必须显式初始化值。如果您在表定义中使用类型,则BEFORE
触发器可以为您完成此操作。