Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados, Sou um inciante em MySQL e em PHP. Utilizo o phpMyAdmin como front-end para gerenciar um banco de dados de processsos em uma universidade. As versões dos softwares que utilizado são as seguintes : Servidor WEB : Apache 1.3.33 Linguagem : PHP 5.0.3 SGBD : MySQL 4.1.14 Front-end(do banco) : phpMyAdmin 2.6.3-pl1 Quando o executo o script que cria as tabelas(um arquivo .SQL), estas são criadas, mas aparece, na telado phpMyAdmin, o seguinte erro: Chaves PRIMARY e INDEX não podem ser usadas juntas para a coluna "tha_num_processo". O banco que criei possui tabelas, chaves primárias e estrangeiras, e índices para otimização das consultas. Será que alguém saberia me dizer o motivo deste erro estár acontecendo ? No mais, é só. Agradeço qualquer ajuda que me for enviada. []'s a todos, Max W. V. Carvalho maxcarvalho@yahoo.com.br
Mostra a estrutura de tua tabela, mas na minha opinião, se você já vai criar a chave primária, pq esta precisa ser index ?Não tem muito sentido isso e talvez seja por isso que esteja dando este erro.
Prezado 'walace' Eu trabalho durante a semana em uma cidade, onde moro, e passo os finais de semana em outra. Assim, te mando a estrutura da tabela no início desta próxima semana. Obrigado pela atenção e um bom final de semana. []'s Max W. V. Carvalho
>
>
Mostra a estrutura de tua tabela, mas na minha opinião, se você já vai criar a chave primária, pq esta precisa ser index ?
Não tem muito sentido isso e talvez seja por isso que esteja dando este erro.
Prezado Wallace,
Segue, abaixo a estrutura da tabela. Caso você necessite de mais informações, é só dizer quais
que as enviarei tão logo seja possível.
A estutura da tabela é a seguinte :
Nome da tabela : tab_h_anexo
Objetivo : Armazenar o histórico de anexos que são juntados a um processo administrativo em uma
universidade.
Estrutura da tabela :
**CREATE TABLE tab_h_anexo (**
tha_num_processo int(6) NOT NULL default '0',
tha_ano_processo varchar(4) NOT NULL default '',
tha_num_anexo int(4) NOT NULL default '0',
tha_tipo_anexo char(3) NOT NULL default '',
tha_detalhe_anexo blob default NULL,
tha_num_documento char(3) NOT NULL default '',
tha_data_documento date NOT NULL default '0000-00-00',
tha_obs blob,
PRIMARY KEY (tha_num_processo,tha_ano_processo,tha_num_anexo)
) TYPE=InnoDB;
Chaves utilizadas :
**Chave primária(composta) : tha_num_processo,tha_num_ano_processo,tha_num_anexo**
Chave estrangeira - segue, abaixo, o comando que adiciona a chave estrangeira à tabela acima
**Alter table tab_h_anexo add constraint fk_processo_h_anexo **
Foreign Key (tha_num_processo,tha_ano_processo) references tab_processo
(tpr_num_processo,tpr_ano_processo) on delete cascade on update cascade;
Índices utilizados :
Índice para chave estrangeira - segue o comando que cria um índice para a chave estrangeira
acima mencionada(fk_processo_h_anexo)
**Alter table tab_h_anexo add Index Idx_fk_tipo_anexo_h_anexo(tha_tipo_anexo);**
Por quê a estrutura foi criada dessa forma ?
Para poder individualizar cada anexo(documento) que é juntado a um processo. Assim :
**tha_num_processo tha_ano_processo tha_num_anexo**
1 2005 1
1 2005 1
2 2006 1
2 2006 2
2 2006 3
Os dois primeiros campos são as chaves primárias de uma outra tabela com a qual a tabela tab_h_anexo está relacionada : a tabela tab_processo.
Desta forma, os dois primeiros campos da chave primária composta supracitada são, nesta tabela, tanto PARTE DA CHAVE PRIMÁRIA COMPOSTA, como também CHAVES ESTRANGEIRAS(uma vez que eles são chave primária da tabela tab_processo).
Bem, espero ter sido claro.
Agradeço imensamente a quem puder me ajudar.
Abraços a todos,
Max W. V. Carvalho
Mostra a estrutura de tua tabela, mas na minha opinião, se você já vai criar a chave primária, pq esta precisa ser index ?Não tem muito sentido isso e talvez seja por isso que esteja dando este erro.