Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2009, 15:10
refreegrata
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 5 meses
Puntos: 27
duda en select for update

Yo trabajo con postgres 8.2, pero supongo que es similar para otros motores.

Voy a dar un ejemplo falso y tal vez sin sentido con el sólo fin de poder plantear mi duda.

1) tengo
Código:
table ejemplo
(
 codigo PK;
 ....
 ...
)
si yo hago una transaccion(con el aislamiento por defecto de lectura cursada) y dentro un
Código:
select * from ejemplo where codigo=1 for update
bueno este select for update impediria que otras transacciones editen la fila con codigo 1 hasta que termine la transaccion.

Ahora ¿que pasa si no encuentra una fila con codigo=1?
Pasa esto:
1) Ninguna otra transacción podrá insertar una fila con codigo 1, ni tampoco podrá
cambiarle a otra fila el código al valor 1

ó pasa esto:

2) puede insertar filas con codigo 1 y también puede cambiarle el codigo a otra fila para dejarselo en 1.