From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: ERROR: se ha detectado un deadlock |
Date: | 2008-01-12 19:10:56 |
Message-ID: | 478910C0.2070800@soft-com.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ever Daniel Barreto Rojas escribió:
> hola a todos:
>
> estoy ejecutando una función (que toma bastante tiempo) que
> actualiza un campo de tipo date desde un campo de tipo varchar
>
> para hacer esto, escribí una función pl/pgsql que recorre todos los
> registros que hay que actualizar y los va actualizando de a uno, sin
> embargo, al pasar cierto tiempo, me encuentro con este error:
>
> 2008-01-12 00:47:51 PYST NOTICE: Actualizando persona 5862315 con fecha <NULL> a 19860315
> 2008-01-12 00:47:52 PYST ERROR: se ha detectado un deadlock
> 2008-01-12 00:47:52 PYST DETALLE: El proceso 10575 espera AccessShareLock en relación 20852 de la base de datos 20014; bloqueado por proceso 10632.
> El proceso 10632 espera AccessExclusiveLock en relación 20890 de la base de datos 20014; bloqueado por proceso 10575.
> 2008-01-12 00:47:52 PYST CONTEXTO: sentencia SQL: «UPDATE persona SET per_fnac = '1986-03-15' WHERE idpersona = 5862315»
> PL/pgSQL function "arreglar_fechas_nacimiento" line 11 at execute statement
> 2008-01-12 00:47:52 PYST SENTENCIA: SELECT arreglar_fechas_nacimiento();
>
El error puede venir por hacer los execute sobre la misma tabla que estas recorriendo con el for..loop
> (de paso, habría alguna forma de acelerar este proceso?)
>
no veo ningun motivo para que no hagas directamente el update sin necesidad de funciones, mas o
menos asi:
update perrsona
set per_fnac = quote_literal(temp_fnac::date)
where
not temp_fnac is null
;
Saludos,
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
From | Date | Subject | |
---|---|---|---|
Next Message | Br@nsh | 2008-01-12 23:28:19 | sobre transacciones... |
Previous Message | Ever Daniel Barreto Rojas | 2008-01-12 18:39:53 | Re: ERROR: se ha detectado un deadlock |