Sé que esta pregunta es oooolllllld y mi solución podría decirse que es demasiado compleja, ¡pero ese es mi tipo de solución favorita!
De todos modos, tuve que hacer lo mismo y lo hice funcionar así:
-- Get count from INSERT
WITH rows AS (
INSERT INTO distributors
(did, dname)
VALUES
(DEFAULT, 'XYZ Widgets'),
(DEFAULT, 'ABC Widgets')
RETURNING 1
)
SELECT count(*) FROM rows;
-- Get count from UPDATE
WITH rows AS (
UPDATE distributors
SET dname = 'JKL Widgets'
WHERE did <= 10
RETURNING 1
)
SELECT count(*) FROM rows;
Uno de estos días tengo que ponerme a escribir un soneto de amor a la cláusula WITH de PostgreSQL...