Mysql - chaves

pmaster

Power Member
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)
);
 
Última edição:
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 :)
 
Back
Topo