a delete operation should be wrapped in a transaction that is roll backed in case an exception occurs (no half deleted datasets)