[Pgsql-ayuda] Integridad referencial

Manuel Sugawara masm@fciencias.unam.mx
25 Feb 2004 11:01:46 -0600


Rafa Rodriguez Hernandez <rhernandez@prisacom.com> writes:

> Hola,
> 
> Necesito si alguno sabeis, como desactivar la integridad referencial,
> volcar un dump y volver a activa dicha integridad.
> 
> Me podeis decir mas o menos como llevarlo a cabo? Necesito medir el tiempo
> que tardo en hacerlo.

Para desactivarlos pg_dump hace algo como:

  UPDATE pg_class SET reltriggers = 0 WHERE relname !~ 'pg_';

y para activarlos de nuevo algo como:

  UPDATE pg_class SET reltriggers = (SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) WHERE relname !~ '^pg_'

Nota que esto desactiva *todos* los triggers, en particular aquellos
que se encargan de mantener la integridad referencial.

Saludos,
Manuel.