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.