PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Obter contagem de registros afetados por INSERT ou UPDATE no PostgreSQL


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...