• Rhinoshock@lemmy.world
    link
    fedilink
    arrow-up
    29
    ·
    1 year ago

    In T-SQL:

    BEGIN TRANSACTION

    {query to update/delete records}

    (If the query returned the expected amount of affected rows)

    COMMIT TRANSACTION

    (If the query did not return the expected amount of affected rows)

    ROLLBACK TRANSACTION

    Note: I’ve been told before that this will lock the affected table(s) until the changes made are committed or rolled back, but after looking it up it looks like it depends on a lot of minor details. Just be careful if you use it in production.

      • rwhitisissle@lemmy.ml
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Because this is c/programmerhumor and the OP hasn’t covered ROLLBACK yet in his sophomore DB class.

    • joemo@lemmy.sdf.org
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Transactions are the safe way of doing it.

      You can also return * to see the changes, or add specific fields.

      Like for example:

      Begin; Update users Set first_name=‘John’ Where first_name=‘john’ Returning *;

      Then your Rollback; Or Commit;

      So you’d see all rows you just updated. You can get fancy and do a self join and see the original and updated data if you want. I like to run an identifying query first, so I know hey I should see 87 rows updated or whatever.

      Haven’t had any issues with table locks with this, but we use Postgres. YMMV.