PSQL 自定义类型插入结果 NULL

PSQL custom type insertion results NULL

我有一个 table 和一个复合类型:

CREATE TYPE server AS (
    id      text,
    load    int
)
CREATE TABLE live_log (
    id              serial      PRIMARY KEY,
    edges           server[],
    origins         server[],
    time            time        NOT NULL,
    date            date        NOT NULL,
    day             text
)

我正在尝试在 live_log table:

中插入一行
INSERT INTO live_log(edges, origins, day, date, time)
VALUES (
    ARRAY[ROW('edge1', 20),ROW('edge2', 30)]::server[],
    ARRAY[ROW('origin1', 20),ROW('origin2', 30)]::server[],
    'Monday',
    '11-01-1994',
    '11:00:30'
);

但是插入复合类型数组的结果仍然是空的,不管INSERT查询有什么变化。

任何人都可以帮我弄清楚我的 INSERT 有什么问题吗?

这很令人愉快。 DBeaver 出于某种原因拒绝显示复合类型数组。控制台 psql 界面显示更完整的输出。

编写一个 select 查询以将数组转换为文本,DBeaver 将为您提供服务器数组的表示形式:

SELECT 
    id,
    edges::text,
    origins::text,
    time,
    date,
    day
FROM live_log

DBeaver 不知道如何表示 "server" 类型。据我所知,DBeaver 检查标准的 Postgres 类型,如果类型与其中之一不匹配,它会放弃并抛出以下内容:

org.jkiss.dbeaver.model.exec.DBCException: Can't resolve struct type 'server'

虽然您不能使用此方法直接打开 table 对象并查看 "Data" 选项卡,但您可以创建基于 table 的视图以便于检查。

此外,serge-rider 通常会响应通过 GitHub 提交的功能请求。不想代表他说话,但这可能是一个增强的案例。