2013/12/11 Milton Labanda <1000ton....@gmail.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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a