Postgresql 从复合类型数组和一个附加列中进行多插入

Postgresql multi insert from array of composite type and one additional column

我有:

CREATE TYPE Item AS (
    a bigint,
    b bigint
);

CREATE TABLE items (
    id bigint NOT NULL,
    a bigint NOT NULL,
    b bigint NOT NULL
);

CREATE OR REPLACE FUNCTION items_insert(
        _id bigint,
        _items Item[]
) RETURNS void AS
...

如何通过一个多插入查询将多个 行插入到 table 个具有相同 _id 来自 _items 的项目?

我正在使用 Postgresql-9.2

我认为你的意思是“插入多个”而不是列。

假设这是正确的,我认为您正在寻找这样的函数:

create or replace function items_insert(_id bigint, _items item[]) 
  returns void 
as
$$
  insert into items (id, a, b)
  select _id, it.*
  from unnest(_items) as it(a,b);
$$
language sql;

Online example