With timestamp ordering, each object is assigned a read timestamp and a write timestamp. A transaction will first read the data, updating the read timestamp. It checks this timestamp before writing - if it has been updated since, it knows another transaction is taking place