postgresql update multiple tables in single query postgresql update multiple tables in single query sql sql

postgresql update multiple tables in single query


This is a CTE thing (but I don't know how to wrap it into a prepared Java-thing)

WITH src AS (        UPDATE serial_rate        SET rate = 22.53, serial_key = '0002'        WHERE serial_key = '002' AND id = '01'        RETURNING *        )UPDATE serial_table dstSET serial_key = src.serial_keyFROM src-- WHERE dst.id = src.id AND dst.serial_key  = '002'WHERE dst.id = '01' AND dst.serial_key  = '002'        ;


This was what was posted by a_horse_with_no_name on sqlfiddle.com:

   WITH id_values (new_key, old_key, id) as (      values ('0002', '002', '01')    ), src AS (      UPDATE serial_rate          SET rate = 22.53,               serial_key = (select new_key from id_values)      WHERE serial_key = (select old_key from id_values)        AND id = (select id from id_values)      RETURNING *    )    UPDATE serial_table dst       SET serial_key = src.serial_key    FROM src    WHERE dst.id = (select id from id_values)      AND dst.serial_key = (select old_key from id_values)    ;

This is actually a modified version of what was posted by wildplasser as a reply to my query that whether the serial_key field could be used once.