A versão curta:"Depende".
A versão longa:
Se você estiver fazendo um ciclo de leitura-modificação-gravação, não apenas deve estar em uma transação, mas você deve
SELECT ... FOR UPDATE
quaisquer registros que você pretenda modificar posteriormente. Caso contrário, você correrá o risco de perder gravações, onde substituirá uma atualização feita por outra pessoa entre quando você leu o registro e quando escreveu a atualização. SERIALIZABLE
o isolamento da transação também pode ajudar com isso. Você realmente precisa entender a simultaneidade e o isolamento. Infelizmente, a única resposta simples e fácil "apenas faça X" sem entendê-la é iniciar cada transação bloqueando todas as tabelas envolvidas. A maioria das pessoas não quer fazer isso.
Sugiro uma leitura (ou duas, ou três, ou quatro - é material difícil) de os documentos de isolamento tx . Experimente com
psql
simultâneo sessões (vários terminais) para criar condições de corrida e conflitos.