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;
我有:
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;