Boa tarde a todos. Eu tenho um problema e gostava de saber se alguem me pode dar uma sugestão. eu numa tabela tenho 2 chaves primarias ou seja uma chave composta.. o problema é que o mysql assume como 2 chaves individuais. chaves: cod_enc - cod_prod se eu iserir os valores 1 - 1 tudo bem.. se eu iserir os valores 1 - 2 ele diz que a chave é duplicada. Penso que o mysql deveria de aceitar porque duplicada era se eu torná-se a colocar 1 - 1 Alguem me pode dar um sugestão? Obrigado
Eu uso o mysql administrador mas o codigo é este: CREATE TABLE `pap`.`nomedatabela` ( `cod_enc` INTEGER UNSIGNED NOT NULL, `cod_prod` INTEGER UNSIGNED NOT NULL, `nome` VARCHAR(45) NOT NULL, `preco` VARCHAR(45) NOT NULL, PRIMARY KEY (`cod_enc`, `cod_prod`) ) ENGINE = InnoDB;
tens que definir a chave primaria como: primary key(cod_enc,cod_prod) EDIT: ou seja, create table nome_tabela( cod_prod number(2) not null, cod_enc number(3) not null, primary key(cod_prod,cod_enc) );
MAs agora dá erro ao adicionar uma FOREIGN KEY.. MySQL Error Number 1005 Can´t create table'.\pap\#sql-630_1'(errno:150) será por eu ter criado as outras tabelas no administrador e esta por código?
Pois, nestes casos, se vens aqui e pedes ajuda, o pessoal tenta, chegas ao fim e dizes que já resolveste acho que não basta. Podes e deves comunicar as correcções mesmo até para o caso de outros utilizadores ao utilizarem a busca poderem resolver problemas semelhantes. Abraço
Claro tens toda razão. A primeira parte do meu problema foi resolvida, eu estava a criar as tabelas com o mysql admin e o mysql nao estava recunhecer a chave composta. fiz como o yumon disse e criei "manualmente", e ficou a funcionar, ainda nao consegui perceber porque nao dava com a query que o admin realizava para criar as tabelmas... Mas adiante, quando criei as tabelas manualmente deixei de conseguir ligar as tabelas, andei a ver e nao consegui descobrir porque. Depois decidi fazer todas as tabelas manualmente, apaguei a BD toda e criei todas as tabelas manualmente e quando experimentei ligar as tabelas continuava a nao dar.. Andei a pesquisar e lembreime de fazer a ligação das tabelas tambem por codigo e nao com o ambiente gráfico do MySQL Admin, e funcionou.. Não consigui perceber ainda porque não dava para fazer o que queria com o Admin já que em casos anteriores consegui, mas não tinha usado ainda chaves compostas. Pesso desculpa por nao ter exposto o que fiz para resolver o problema, e obrigado por me chamares a atenção Tomb4000. Um Bom Natal a todos