Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

duda en select for update

Estas en el tema de duda en select for update en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/06/2009, 15:10
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 9 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.
  #2 (permalink)  
Antiguo 19/06/2009, 05:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: duda en select for update

Que tal refreegrata
Que pruebas has hecho?

crea una tabla con muchos registros(con una función), empezar una transacción larga, y desde otra terminal realizar las pruebas que dices. Tratar de modificar una fila o ingresar un valor que no está en el select pero que aparentemente se encuentra bloqueado por la transacción.

Cuentanos como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 19/06/2009, 07:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: duda en select for update

Ayer se me ocurrio como comprobarlo y vi que lo que pasa es el caso 2, es decir el select for update solo bloquea filas existentes y no evita que aparezcan nuevas filas que cumplan la condición, para esto las transacciones debieran ser serializables. Pero por diseño de la base de datos no debiera haber problemas, sin embargo me va a salir el error por pantalla, a menos que la haga serializable, haga un lock u otra cosa.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:29.