TL;DR
A single INSERT/UPDATE/DELETE statement is run within an implicit transaction scope regardless of how many records they modify A transaction must be explicitly rolled back upon error After a transaction is rolled back, the error should be raised so that the script runner becomes aware of the error A single INSERT/UPDATE/DELETE statement Each individual INSERT/UPDATE/DELETE statement is run by SQL Server within an implicit transaction scope. This is regardless of the number of records affected by these statements.