"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.
I would run a SELECT with a WHERE clause to see the data I was about to remove to make sure it looked right. Then I would make the delete and Copy and Paste (can you see where this is going? - pun intended) the WHERE clause from the Select into the Delete and run it. But I didn’t. This was a production database. It got so hot all of a sudden as I realised what I had done! Lucky we only lost a few hours work.
I am sorry for your loss