1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Mysql - chaves

Discussão em 'Programação' iniciada por pmaster, 23 de Dezembro de 2008. (Respostas: 8; Visualizações: 1693)

  1. pmaster

    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 :)
     
  2. Tomb4000

    Tomb4000 Power Member

    mete aí o SQL da criação da tabela.
     
  3. pmaster

    pmaster Power Member

    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;
     
  4. Yumon

    Yumon Power Member

    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: 23 de Dezembro de 2008
  5. pmaster

    pmaster Power Member

    Funcionou! :D

    mas porque não dava como eu tinha?

    obrigado pela ajuda :D
     
  6. pmaster

    pmaster Power Member

    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?
     
  7. pmaster

    pmaster Power Member

    Já consegui resolver o problema pessoal.


    Obrigado :)
     
  8. Tomb4000

    Tomb4000 Power Member

    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
     
  9. pmaster

    pmaster Power Member

    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 :)
     

Partilhar esta Página