Will appreciate if someone can please guide if Postgres allows assignment for a ARRAY record attribute. For example - dummy set up.
Trying to update an ttribute of a Record (part of array) . The direct assignment does not work. Have to create a roundabout way of creating extra record, assignment and swapping.
create table dummy_array (id numeric, descr varchar(100));
insert into dummy_array values(1,'TEST1'),(2,'TEST2');
select * from dummy_array;
do
$function$
declare
v_array dummy_array[];
v_dummy_rec dummy_array;
begin
v_array=array(select ROW(id,descr) from dummy_array);
raise notice '%',v_array[1].descr;
--FOLLOWING DIRECT ASSIGNMENT DOES NOT WORK
v_array[1].descr :='ZZZ';--This assignment errors out
end ;
$function$
Errors out with SQL ERROR[42601]:ERROR:syntax error at or near "."
Tried even (v_array[1]).descr :='ZZZ'; does not work
Following Works but a hack create temp, copy,assign ,modify reassing
do
$function$
declare
v_array dummy_array[];
v_dummy_rec dummy_array;
begin
v_array=array(select ROW(id,descr) from dummy_array);
raise notice '%',v_array[1].descr;
**--v_array[1].descr :='ZZZ';--This assignment errors out**
v_dummy_rec :=v_array[1];
v_dummy_rec.descr :='ZZZ';
v_array[1]:=v_dummy_rec;
raise notice '%',v_array[1].descr;
end ;
$function$
Can somone please guide me if it is possible to do direct assignments like shown above
**v_array[1].descr :='ZZZ';--This assignment errors out**