Eu sei que essa pergunta é oooolllllld e minha solução é sem dúvida excessivamente complexa, mas esse é o meu tipo favorito de solução!
De qualquer forma, eu tive que fazer a mesma coisa e consegui funcionar assim:
-- 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;
Um dia desses eu realmente tenho que escrever um soneto de amor para a cláusula WITH do PostgreSQL...