- Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 18 anos, 6 meses atrás por
vieri.
-
AutorPosts
-
30 de agosto de 2007 às 7:12 pm #80368
vieri
Participantegalera 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 violatedtem com colocar uma clausula do tipo novalidate para a pk naum validar os dados , preciso criar essa pk, sem mecher nos dados existentes.
31 de agosto de 2007 às 2:58 am #80371DanielB
Participantesi 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
31 de agosto de 2007 às 5:40 pm #80375JamirJr
ParticipanteColega,
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.
31 de agosto de 2007 às 6:12 pm #80378Marcio68Almeida
ParticipanteApoiando 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…31 de agosto de 2007 às 9:55 pm #80390vieri
ParticipanteAgradeç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_PKMarcio,
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!
-
AutorPosts
- Você deve fazer login para responder a este tópico.