| 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: | Whole Thread | Raw Message | 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 |