PL/SQL para desabilitar / habilitar CONSTRAINTs

Nada de mais aqui, pessoal. Só é algo que utilizei hoje para uma migração via Golden Gate, e guardo aqui para uso futuro.

Desabilitar CONSTRAINTS:

BEGIN
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name
   FROM dba_constraints c, dba_tables t
   WHERE c.table_name = t.table_name
   AND c.status = 'ENABLED'
   AND c.owner = 'SCOTT'
   ORDER BY c.constraint_type DESC)
  LOOP
    dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint ' || c.constraint_name);
  END LOOP;
END;
/

Habilitar todas as CONSTRAINTs:

BEGIN
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name
   FROM dba_constraints c, dba_tables t
   WHERE c.table_name = t.table_name
   AND c.status = 'DISABLED'
   AND c.owner = 'SCOTT'
   ORDER BY c.constraint_type)
  LOOP
    dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" enable constraint ' || c.constraint_name);
  END LOOP;
END;
/

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.