Yo trabajo con postgres 8.2.

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

1) tengo :

   table ejemplo
   (
    codigo PK;
    ....
    ...
  )

si yo hago una transaccion(con el aislamiento por defecto) y dentro un

         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.

Bueno, espero puedan ayudarme


      

Responder a