sql >> Base de Datos >  >> RDS >> PostgreSQL

Forma correcta de seleccionar y actualizar SQL

Primero, al mínimo deberías estar haciendo SELECT ... FOR UPDATE por lo que bloquea las filas contra otros SELECT ... FOR [SHARE|UPDATE] acceso. Debe hacer esto dentro de una transacción y retener esa transacción hasta que actualice la última fila y commit .

Las filas que SELECT ... FOR UPDATE no bloqueado contra normal SELECT; todavía son legibles para otras transacciones que no usan FOR UPDATE o FOR SHARE .

Mejor aún, trate de reformular todo como UPDATE ... FROM u otra operación basada en conjuntos en la que haces todo el trabajo en una sola consulta. Por lo general, funcionará mucho mejor que un SELECT ... FOR UPDATE seguido de una secuencia de UPDATE s.