【问题标题】:Postgres Insert elements to array inside user defined type columnPostgres将元素插入用户定义类型列内的数组
【发布时间】:2021-11-14 19:07:23
【问题描述】:

所以我试图在一个用户定义类型中找到的数组中插入 3 个元素,该类型是表的一列。这就是我现在拥有的:

INSERT INTO pais(pais)
VALUES (ROW ('Espanya', ARRAY['Barcelona', 'Madrid', 'Sevilla'])::t_pais);

类型如下:

CREATE TYPE t_pais AS
(
    nom_pais VARCHAR(35),
    localitzacions t_localitzacio ARRAY
);

t_localitzacio 类型如下所示:

create type t_localitzacio as
(
    nom_localitzacio varchar(35)
);

表格如下所示:

CREATE TABLE Pais
(
    id_pais serial PRIMARY KEY,
    pais t_pais
);

我收到以下错误:

malformed record literal: <<Barcelona>>

提前致谢!

【问题讨论】:

    标签: sql postgresql sql-insert


    【解决方案1】:

    如果你像这样简化 t_pais 类型:

    CREATE TYPE t_pais AS
    (
        nom_pais VARCHAR(35),
        localitzacions VARCHAR(35)[]
    );
    

    那么您的插入将起作用。

    如果您不能更改表和类型定义,那么您必须更改您的INSERT 语句如下:

    INSERT INTO pais(pais)
    VALUES (ROW ('Espanya', ARRAY[ROW('Barcelona') :: t_localitzacio , ROW('Madrid') :: t_localitzacio , ROW('Sevilla') :: t_localitzacio ])::t_pais);
    

    【讨论】:

    • 不能这样做,因为我需要保持表和类型都保持原样
    猜你喜欢
    • 2021-11-11
    • 2021-05-28
    • 2021-10-31
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多