如何设置/获取嵌套复合类型变量的字段?

gee*_*eko 5 postgresql composite-types

例如:

create type t1 as (a int2, b text, c boolean);
create type t2 as (a t1, b boolean);
create type t3 as (a t2, b int4);
Run Code Online (Sandbox Code Playgroud)

现在,如何对 t3 类型的变量 x 执行以下操作:

x.a.a.c := true;
y := x.a.a.c;
Run Code Online (Sandbox Code Playgroud)

第一个给了我一个错误。

joa*_*olo 3

有一个(在我看来很糟糕解决方法......您一次只能访问下一层。使用中间变量。

DO LANGUAGE PLPGSQL
$$
DECLARE 
    x t3 ;
    x2 t2 ;
    x1 t1 ;
BEGIN
    -- x.a.a.c := true;   -- Syntax error

    x2 := x.a ;
    x1 := x2.a ;
    x1.c := true ;
    x2.a := x1 ;
    x.a := x2 ;
END ;
$$
Run Code Online (Sandbox Code Playgroud)

dbfiddle在这里