Nothing to do with checkpoint.
If you don't defined explicit transactions, then each and every data modification statement is wrapped in its own transaction which is automatically committed upon completion.
So let's say you have this:
Insert into tb1 ...
Update tbl1 ...
Delete from tbl1
No explicit transaction, so that's run as 3 transactions. If SQL crashed half way through the update, the insert would be considered committed and the update not committed, so upon restart the inserted rows would be in the table and none of the update would have been done
If instead you had this
begin transaction
Insert into tb1 ...
Update tbl1 ...
Delete from tbl1
commit
now, if SQL crashes half way through the update, the insert and update are rolled back on restart as the commit was never reached.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability