Premesso che non conosco Postgres

MySql dichiara di essere in grado di gestire le transazioni, ma non ne ho ancora avuto la prova.

Facendo precedere un blocco di istruzioni di aggiornamento
dal comando

mysql_query("BEGIN", $this->db_connect_id)

si apre una transazione che in DB evoluti provoca il look dei record che saranno interessati dai successivi aggiornamenti.

Concluse le operazioni di aggiornamneto

mysql_query("COMMIT", $this->db_connect_id)
o in alternativa
mysql_query("ROLLBACK", $this->db_connect_id)

renderanno nuovamente disponibili tali record ad altri aggiornamenti.

Non è in ogni caso garantito il look sulle singole tuple aggiornate, molto probabilmente il DB lavora per blocchi.

Inoltre mysql può lokkare un'intera tabella

LOCK TABLES
tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
[, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
UNLOCK TABLES

LOCK TABLES locks tables for the current thread. UNLOCK
TABLES releases any locks held by the current thread. All tables that are locked by the current thread are implicitly unlocked when the thread issues another LOCK TABLES, or when the connection to the server is closed.

Note:LOCK TABLES is not transaction-safe and implicitly
commits any active transactions before attempting to lock the tables.