Jag vet att den här frågan är oooolllllld och min lösning är utan tvekan alltför komplex, men det är min favoritlösning!
Hur som helst, jag var tvungen att göra samma sak och fick det att fungera så här:
-- 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;
En av dessa dagar måste jag verkligen komma runt för att skriva en kärlekssonnett till PostgreSQL:s WITH-klausul ...