Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #80368
    vieri
    Participante

      galera preciso de um help urgente!!!

      SQL> ALTER TABLE JUNTADAS
      2 ADD (CONSTRAINT JUN_PK PRIMARY KEY
      3 (DOC_ID_DOCUMENTO
      4 ,DOC_UF_NU_UF_IBGE
      5 ,DOC_ID_DOCUMENTO_POSSUI
      6 ,DOC_UF_NU_UF_IBGE_POSSUI)
      7 USING INDEX
      8 INITRANS 2
      9 MAXTRANS 255
      10 PCTFREE 10
      11 STORAGE
      12 (
      13 INITIAL 6266880
      14 MINEXTENTS 1
      15 MAXEXTENTS UNLIMITED
      16 )
      17 TABLESPACE SIPRO_IDX_1)
      18 /

      ADD (CONSTRAINT JUN_PK PRIMARY KEY
      *
      ERROR at line 2:
      ORA-02437: cannot validate (SIPRO.JUN_PK) – primary key violated

      tem com colocar uma clausula do tipo novalidate para a pk naum validar os dados , preciso criar essa pk, sem mecher nos dados existentes.

      #80371
      DanielB
      Participante

        si no puedes modifica los datos tienes mal definida la clae primaruia, pues te esta diciendo que no puede validarla, es decir hay al menos 2 registros que tienen los mismos valores para la primary que defines

        #80375
        JamirJr
        Participante

          Colega,

          vc pode fazer depois da criação:

          The following statement tries to place in ENABLE NOVALIDATE state two constraints on the employees table:

          ALTER TABLE employees
          ENABLE NOVALIDATE PRIMARY KEY
          ENABLE NOVALIDATE CONSTRAINT emp_last_name_nn;

          Agora, se vc já sabe que o campo que será primary key tem duplicidade é melhor verificar os dados.

          #80378
          Marcio68Almeida
          Participante

            Apoiando as afirmações anteriores, verifique a necessidade dessa PK, se não é uma chave única, então por que não criar um índice comum ???
            Não tente maquiar uma modelagem mal feita, isso só trará problemas posteriores…

            #80390
            vieri
            Participante

              Agradeços as respostas.

              Conforme dito pelos meus camaradas DBAs, e tb pelo Jamir,tive que resolver da seguinte maneira!

              Ao recriar uma chave primaria, um indice unico é criado em seguida automaticamente com mesmo nome da pk!!

              Se tiverem dados replicados ocorrera erro de violação na recriação…

              solução

              1° dropar a pk

              alter table JUNTADAS drop constraints jun_pk;

              2°criar indice não unico(normal) na mesma sequencia da pk,
              assim oracle não criará um indice unico nos campos da pk, ele ira usar o indice normal ja criado.

              CREATE INDEX SIPRO.jun_pk ON SIPRO.juntadas (DOC_ID_DOCUMENTO,DOC_UF_NU_UF_IBGE,
              DOC_ID_DOCUMENTO_POSSUI,DOC_UF_NU_UF_IBGE_POSSUI
              )

              3°criar a pk desabilitada

              ALTER TABLE JUNTADAS
              ADD (CONSTRAINT JUN_PK PRIMARY KEY
              (DOC_ID_DOCUMENTO
              ,DOC_UF_NU_UF_IBGE
              ,DOC_ID_DOCUMENTO_POSSUI
              ,DOC_UF_NU_UF_IBGE_POSSUI)
              DISABLE )
              /

              5°habilitar a pk, sem validar oque ja existe.
              ALTER TABLE JUNTADAS ENABLE NOVALIDATE constraint JUN_PK

              Marcio,
              Quanto a modelagem!
              Essa fica por conta dos ADs e do desenv, ja que aqui na empresa existem
              86 instancias oracle para administrar.Ai o papel de DBA fica bem definido.
              So participamos do modelo lógico do projeto em algumas excessões.
              Ai ja viu né… só merda para resolver!!!!

              abraços e agradeço as postagens!

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