2013/12/11 Milton Labanda <[email protected]>:
> 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 ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda