在 CTE 中使用执行语句
Using Execute Statement with CTE
PREPARE insert_DEL_CRN(bigint, char, char, char) as
insert into
deleted_crns(id, crn, ror, cpr) values(, , , )
ON CONFLICT (crn)
DO update
set id=, ror=, cpr=;
正在尝试将以下 CTE 表达式与 EXECUTE insert_DEL_CRN
一起使用
WITH deleted_record as (
delete from crns where crn='8000440000'
RETURNING id,crn,ror,cpr
)
execute insert_DEL_CRN
select deleted_record.id, deleted_record.crn, deleted_record.ror,
deleted_record.cpr
from deleted_record;
导致此错误:
ERROR: syntax error at or near "EXECUTE"
LINE 1: ... where crn='8000440000' RETURNING id,crn,ror,cpr) EXECUTE in...
任何人都可以在这里指出任何具体问题。
您需要将两个语句合二为一。要引用 DO UPDATE
部分中冲突行的值,请使用特殊关键字 excluded
WITH deleted_record as (
delete from crns
where crn='8000440000'
RETURNING id,crn,ror,cpr
)
insert into deleted_crns (id, crn, ror, cpr)
select id,crdn,ror,cpr
FROM deleted_records
ON CONFLICT (crn)
DO update
set id = excluded.id,
ror = excluded.ror,
cpr = excluded.cpr;
PREPARE insert_DEL_CRN(bigint, char, char, char) as
insert into
deleted_crns(id, crn, ror, cpr) values(, , , )
ON CONFLICT (crn)
DO update
set id=, ror=, cpr=;
正在尝试将以下 CTE 表达式与 EXECUTE insert_DEL_CRN
WITH deleted_record as (
delete from crns where crn='8000440000'
RETURNING id,crn,ror,cpr
)
execute insert_DEL_CRN
select deleted_record.id, deleted_record.crn, deleted_record.ror,
deleted_record.cpr
from deleted_record;
导致此错误:
ERROR: syntax error at or near "EXECUTE"
LINE 1: ... where crn='8000440000' RETURNING id,crn,ror,cpr) EXECUTE in...
任何人都可以在这里指出任何具体问题。
您需要将两个语句合二为一。要引用 DO UPDATE
部分中冲突行的值,请使用特殊关键字 excluded
WITH deleted_record as (
delete from crns
where crn='8000440000'
RETURNING id,crn,ror,cpr
)
insert into deleted_crns (id, crn, ror, cpr)
select id,crdn,ror,cpr
FROM deleted_records
ON CONFLICT (crn)
DO update
set id = excluded.id,
ror = excluded.ror,
cpr = excluded.cpr;