"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.

  • Marek Knápek
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    Sh1t already happened, but on the bright side, you learn for the next time. Some tips:

    • Make clone of production environment into testing environment. Do stuff there, and after it is tested / verified, do the same in production. Emphasis on “do exactly the same”.
    • Make regular automatic backup. From time to time, do a backup restore to another computer (VM) and verify that it is restored successfully and is actually usable.
    • Poor man’s backup is automatic daily (hourly?) snapshots on BTRFS / ZFS / EXT4 filesystems or VolumeShadowCopy on NTFS filesystem.
    • Before any UPDATE do a SELECT and verify the data you are modifying are the data you actually want to modify.
    • Use a transactions in form of BEGIN TRANSACTION; UPDATE stuff; ROLLBACK; and observe the DB behavior, or see how many rows are affected.
    • Somebody has even moar tips, I’m sure. Please write them below.