"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 don’t know if it makes you feel better but Tom Scott had a similar experience: https://youtu.be/X6NJkWbM1xk
SQL scouts credo: I will never use indexes, I will always use column names.
this folks, is why you don’t raw dog sql like some caveman
Raw dog is the fastest way to finish a task.
- productivity
- risk
It’s a trade-off
No, but people are sometimes forced to do these things because of pressure from management and/or lack of infrastructure to do it in any other way.
Definitely don’t endorse it but I have done it. Think of a “Everything is down” situation that can be fixed in 1 minute with SQL.
You all run queries against production from your local? Insanity.
This doesn’t help you but may help others. I always run my updates and deletes as selects first, validate the results are what I want including their number and then change the select to delete, update, whatever