Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #86226
    silverwal
    Participante

      Olá Pessoal,

      Estou tentando habilitar algumas constraints com o seguinte script;

      [b]SET PAGESIZE 1000
      SET HEADING OFF
      SET LINESIZE 120

      SPOOL C:SATIenable_constraint.SQL

      SELECT ‘ALTER TABLE ‘||’LF.’||TABLE_NAME||’ enable CONSTRAINT ‘||CONSTRAINT_NAME||’;’
      FROM DBA_CONSTRAINTS
      WHERE OWNER = ‘LF’
      AND STATUS = ‘DISABLED’
      AND CONSTRAINT_TYPE = ‘R’
      /
      select instance_name from v$instance;

      SPOOL OFF

      SPOOL C:SATILOG_enable_constraint.LOG
      @C:SATIenable_constraint.SQL
      select instance_name from v$instance;
      SPOOL OFF[/b]

      mas está acontecendo o seguinte problema abaixo;

      ALTER TABLE LF.IN68_DD02 enable CONSTRAINT FK_IN68_DD02_002
      *
      ERROR at line 1:
      ORA-02270: no matching unique or primary key for this column-list

      ALTER TABLE LF.IN68_DD03 enable CONSTRAINT FK_IN68_DD03_001
      *
      ERROR at line 1:
      ORA-02270: no matching unique or primary key for this column-list

      ALTER TABLE LF.IN68_INTIMACAO_FILTROS enable CONSTRAINT FK_IN68_INTIMACAO_FILTROS_001
      *
      ERROR at line 1:
      ORA-02270: no matching unique or primary key for this column-list

      ALTER TABLE LF.IN68_INTIMACAO_TAREFAS enable CONSTRAINT FK_IN68_INTIMACAO_TAREFAS_001
      *
      ERROR at line 1:
      ORA-02270: no matching unique or primary key for this column-list

      ALTER TABLE LF.LF_NF_SAIDA_ITEM_ISS enable CONSTRAINT FK_LF_NF_SAIDA_ITEM_ISS_001
      *
      ERROR at line 1:
      ORA-02298: cannot validate (LF.FK_LF_NF_SAIDA_ITEM_ISS_001) – parent keys not found

      alguém pode me ajudar ?

      [ ] ‘s

      #86227
      Rodrigo Almeida
      Participante

        Você habilitou as Primarys Keys das tabelas para realizar a integração?

        Tem Primarys Keys não existentes para algumas tabelas, por isso, Parent Key not found.

        Para habilitar as constraints, basta habilitar primeiramente as primarys keys e posteriormentes as foreigns keys.

        Abraços,
        Rodrigo Almeida

        #86228
        Ishii
        Participante

          Olá,

          1) ORA-02270: no matching unique or primary key for this column-list : Habilite primeiro as Primaries Keys e depois as Foreigns Keys;

          2) ORA-02298: cannot validate (LF.FK_LF_NF_SAIDA_ITEM_ISS_001) – parent keys not found :
          Tem dados nesta Tabela que não estão na Tabela da Primary Key…

          Para isso sera necessário uma query e descobrir quais são as linhas faltantes…

          Em caso de se haver a necessidade real de habilitar as Constraints sem essa verificação (não recomendável) pode ser utilizado a opção novalidate

          []s Ishii

          #86230
          David Siqueira
          Participante

            Fica com esse script ai na manga :

            Accep own prompt "Entre com o Owner....:"
            accep tbs prompt "Entre com a tabela ...:"

            set linesize 1000
            set pagesize 0
            set feedback off
            spool enable_constraints.out

            prompt ---- Check Constraints

            select ' alter table '||owner||'.'||table_name||' enable novalidate constraint '||constraint_name||';'
            from dba_constraints
            where owner like upper(nvl ('%&OWN%',OWNER))
            and constraint_type='C'
            and status != 'ENABLED'
            and table_name like upper(nvl('%&tbs%',TABLE_NAME));

            prompt ---- Unique Constraints

            select ' alter table '||owner||'.'||table_name||' enable novalidate constraint '||constraint_name||';'
            from dba_constraints
            where owner like upper(nvl ('%&OWN%',OWNER))
            and constraint_type='U'
            and status != 'ENABLED'
            and table_name like upper(nvl('%&tbs%',TABLE_NAME));

            prompt ---- Primary Constraints

            select ' alter table '||owner||'.'||table_name||' enable novalidate constraint '||constraint_name||';'
            from dba_constraints
            where owner like upper(nvl ('%&OWN%',OWNER))
            and constraint_type='P'
            and status != 'ENABLED'
            and table_name like upper(nvl('%&tbs%',TABLE_NAME));

            prompt ---- Referential Constraints

            select ' alter table '||owner||'.'||table_name||' enable novalidate constraint '||constraint_name||';'
            from dba_constraints
            where owner like upper(nvl ('%&OWN%',OWNER))
            and constraint_type='R'
            and status != 'ENABLED'
            and table_name like upper(nvl('%&tbs%',TABLE_NAME));

            spool off

            Abraço.

            David

            #86231
            Marcio68Almeida
            Participante

              Apenas uma observação…

              Antes de sair habilitando constraints, verifique as regras de negócio se essas constraints podem ou não ser habilitadas, pode ser que foram desabilitadas por não contemplar alguma funcionalidade da aplicação.
              O ideal é verificar sempre as PKs, como foi sugerido pelos nossos colegas, depois verificar as FKs e por último as demais constraints.

              Mas faça sempre adompanhado do AD.

              #86260
              silverwal
              Participante

                Pode crer Drbs vlw e mesmo, e tbém a todos vocês mas como meu amigo Marcio68Almeida tem razão as constraints não era para ser habilitadas, mas enfim muito obrigado mesmo a todos vocês, o que eu puder ajudar em alguma coisa pode contar comigo tbém!

                [ ] ´s All.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.