Nepotřebujete k tomu kurzor, nepotřebujete plpgsql, nepotřebujete ani CTE modifikující data což by vám umožnilo to udělat v jediném příkazu SQL.
Stačí spustit dva prosté INSERT
prohlášení . Pokud se chcete ujistit, že je použito vše nebo nic, vložte je do transakce:
BEGIN;
INSERT INTO B (col1, col2)
SELECT col1, col2
FROM A
WHERE col_cond = 'something';
INSERT INTO C (col1, col2)
SELECT col1, col2
FROM A
WHERE col_cond IS DISTINCT FROM 'something';
COMMIT;