If you specify the isolation level 0 (uncommitted), then rows are read without shared locks being requested implicitly. If a row is then read twice within a transaction, this isolation level does not guarantee that the row has the same state the second time as the first, since it could have been changed by a competing transaction between the two reads.
Furthermore, there is no guarantee that the state of a row that was read has already been recorded in the database using a COMMIT WORK statement.
When rows are inserted, updated or deleted, implicit exclusive locks are assigned to the transaction for the rows concerned. These cannot be released until the end of the transaction.