Re: Modificar clave primaria

From: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
To: Milton Labanda <1000ton(dot)lab(at)gmail(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>, Foros Postgre Ecuador <ecpug(at)postgresql(dot)org>
Subject: Re: Modificar clave primaria
Date: 2013-12-11 18:42:25
Message-ID: CAJKUy5g469JqTcsAc11qzzdj--a_CP4paWHdQTPe97_Hnj5hKA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: ecpug pgsql-es-ayuda

2013/12/11 Milton Labanda <1000ton(dot)lab(at)gmail(dot)com>:
> Hola amigos, espero haya sido un éxito el PgDay 2013.

Saludos,

Bastante bonito me parecio

> Que me aconsejan para modificar el valor de una clave primaria en un sistema
> que por error de diseño, le pusieron como clave primaria el numero de cédula
> en una tabla estudiante.
> Hay como desactivar temporalmente los constraint FK ? o alguna otra
> solución? que no sea el tener que crear otro registro y migrar los datos.
>

Si tus constraints fueron creados con la opcion DEFERRABLE (el
predeterminado es NOT DEFERRABLE asi que si no lo hiciste pasa al
siguiente parrafo) basta con abrir una transacción y ejecutar SET
CONSTRAINTS {ALL | nombre} DEFERRED; hacer los cambios que necesites y
asegurarte que antes del commit todo sea consistente.
(http://www.postgresql.org/docs/9.3/static/sql-set-constraints.html)

La otra alternativa es deshabilitar los triggers en los que estan
basados los constraints, los FK se implementan a traves de triggers
especiales pero puedes deshabilitarlos con: ALTER TABLE nombre DISABLE
TRIGGER {ALL | nombre}. Asegurate de rehabilitar los triggers una vez
que hiciste lo que quieres hacer.

La diferencia entre ambos es que el primero es por transacción, el
segundo afecta a todo el mundo. Es decir, nadie tendra habilitado los
FK

--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157

In response to

Responses

Browse ecpug by date

  From Date Subject
Next Message Milton Labanda 2013-12-11 20:40:25 Re: Modificar clave primaria
Previous Message Lazaro Ruben Garcia Martinez 2013-12-11 15:23:35 Re: [pgsql-es-ayuda] Modificar clave primaria

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Milton Labanda 2013-12-11 20:40:25 Re: Modificar clave primaria
Previous Message Lazaro Ruben Garcia Martinez 2013-12-11 15:23:35 Re: [pgsql-es-ayuda] Modificar clave primaria