"UPDATE table_name SET w = $1, x = $2, z = $4 WHERE y = $3 RETURNING *",
does not do the same as
"UPDATE table_name SET w = $1, x = $2, y = $3, z = $4 RETURNING *",
It’s 2 am and my mind blanked out the WHERE, and just wanted the numbers neatly in order of 1234.
idiot.
FML.
Sh1t already happened, but on the bright side, you learn for the next time. Some tips:
UPDATE
do aSELECT
and verify the data you are modifying are the data you actually want to modify.BEGIN TRANSACTION; UPDATE stuff; ROLLBACK;
and observe the DB behavior, or see how many rows are affected.