Hola:
Tenemos un sistema hecho en toba 2.5, y tenemos un problema. Cada cierto tiempo nos tira error de concurrencia. No encuentro que puede ser ya que nadie esta tocando el sistema en ese momento, ni hay alguien editando los datos.
Paso el cartel de error que nos tira.
Por donde podría ir viendo?
Saludos
Hola Rodrigo,
te hago una consulta, la operacion en cuestion involucra eliminacion de datos como parte de un alta o una modificacion?.. hay algun campo que sea de tipo double, float?.
Fijate si aplicando este changeset se soluciona, es algo que encontramos hace poco.
Saludos
Hola Ricardo:
Mira, no es ese el error. Te paso el sql que quiere ejecutar el toba:
UPDATE personas SET idsituacionestudiosecundario = “1”, idcolegiosecundario = “600047”, idtitulosecundario = “6”
WHERE discapacidad = “3” AND discapacidad_contacto = “3”
AND recibio_beca_unpsjb = “false” AND pueblosoriginarios IS NULL
AND idpersona = “84790” AND apellido = “ALVARENGA” AND nombres = “SANDRA ISABEL”
AND idgruposanguineo = “3” AND fechanacimiento = “1971-05-24” AND idtipodocumento = “0”
AND nroci IS NULL AND identidad IS NULL AND idpaisemisorpasap IS NULL AND nropasap IS NULL
AND documentoextranjero IS NULL AND apellidopadre = “Alvarenga” AND nombrespadre = “Ramion”
AND apellidomadre = “Insfran” AND nombresmadre = “Marina” AND idorientvocrec = “3” AND idsexo = “2” A
ND tituloextranjero IS NULL AND colegioextranjero IS NULL AND idsituacionestudiosecundario = “4”
AND idcolegiosecundario IS NULL AND idtitulosecundario IS NULL AND anioingresosec = “1994”
AND anioegresosec IS NULL AND ttp_col_sec IS NULL AND idlocalidadnacimiento = “609” AND
nrodocumento = “21645121” AND nombrecolegiosecundario IS NULL AND anioingresouniversidad IS NULL AND idpaiscolext IS NULL;
La cosa es asi, quiero cambiar el idcolegiosecundario y el idtitulo, pero esta en el where. Entonces tira error. La tabla de personas tiene que el pk es idpersonas y es unico.
Hola Rodrigo,
el tema es el siguiente, para saber si el registro fue manipulado por alguien mas desde que vos lo cargaste hay dos formas:
- Hacer un lock de fila/tabla: Poco performante y dependiente del motor
- Hacer un where con los datos exactos que leiste, si nada cambio tiene que encontrar el registro
El punto es, que si con ese where te da problemas de concurrencia… desde que vos cargaste el registro en el DR/DT (con esos valores se arma el where) hasta que enviaste a sincronizar, algun proceso cambio al menos un valor para las columnas involucradas, quizas no sea una columna que se visualiza por pantalla… pero algo cambio porque no encontro el registro.
La otra posibilidad, es que esten desarrollando en windows y que la version puntual de postgres no informe adecuadamente la cantidad de filas modificadas, en cuyo caso esto podria ser un falso positivo, si ese fuera el caso… te diria que deberian probar con otra version del motor quizas.
Esta funcionalidad es para detectar si alguien manipulo el registro y por tanto los datos que leiste ya no son validos, si te dejara guardar asi como asi… podrias pisar los cambios que hizo la otra persona, la idea es que te evite eso.
Saludos