PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ottieni il conteggio dei record interessati da INSERT o UPDATE in PostgreSQL

So che questa domanda è oooolllllld e la mia soluzione è probabilmente eccessivamente complessa, ma questo è il mio tipo di soluzione preferito!

Ad ogni modo, ho dovuto fare la stessa cosa e farlo funzionare in questo modo:

-- 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 di questi giorni devo davvero riuscire a scrivere un sonetto d'amore per la clausola WITH di PostgreSQL...