【发布时间】:2019-01-28 02:55:39
【问题描述】:
我一直在尝试将一组唯一代码从一组对象输入到 postgres。这是我到目前为止所拥有的,但它在INTO附近不断失败。我之前尝试过循环版本,但它从来没有插入任何东西,但也不会产生错误。下面将是理想的批量插入,无需任何 FOR 循环。
CREATE OR REPLACE FUNCTION "InsertCodes" (
"@codes" JSONB,
"@type" TEXT
)
RETURNS void AS
$func$
DECLARE "id" UUID;
BEGIN
"id" = uuid_generate_v4();
SELECT * FROM (
SELECT *
FROM jsonb_array_elements("@codes")
) AS c (
-- fails below
INSERT INTO
"codes" (
"id",
"code",
"name",
"type"
)
VALUES (
"id",
c."code",
c."name",
"@type"
);
ON CONSTRAINT ("code")
DO NOTHING
RETURNING 1;
);
END;
$func$ LANGUAGE PLPGSQL;
@codes 如下所示:
[
{
"code": 1234,
"name": "numeric"
},
{
"code": "1k1l2k",
"name": "alphanumeric"
}
]
【问题讨论】:
标签: postgresql sql-insert bulkinsert jsonb