none
Auto increment sql server RRS feed

  • Pergunta

  • Pessoal, eu tenho duas tabelas, uma grade ontem tenho duas chaves a primaria q e idgrade e a estrangeira q é idcodprod e a tabela produto que tem o idproduto, eu liguei a idproduto na chave estrangeira idcodprod, ai vem a minha duvida, quando eu adc um produto novo, a chave estrageira nao tem que auto incrementa ?
    quinta-feira, 17 de janeiro de 2013 13:40

Respostas

  • Olá Guilherme,

    Sua dúvida é um pouco mais pertinente ao banco. Chaves estrangeiras não são autoincrement, elas são para garantir a integridade referencial da sua tabela.

    No seu caso, a IdCodProd (FK) garante que quando você colocar um código nesse campo, ele exista na tabela de produtos. Caso não existir ele retornará para você um "exception" de violação de chave estrangeira.

    Um campo chave primaria no caso pode ou não ser um auto-contador, isso dependerá de como a sua coluna foi projetada no banco de dados.

    Por tanto no seu caso a coluna IdGrade pode ser um auto-contador, mas IdCodProd não, esta somente poderá receber um código que já exista na tabela de produtos, mas esse relacionamento é "1 / n", o que quer dizer que em alguns casos você poderá ter códigos na tabela de produtos que não existam nunca na tabela grade, e que você tenha um mesmo código que apareca mais de uma vez.

    Se você necessita que toda vez que você inclua um novo produto na tabela "produtos" inclua-se um novo registro na tabela "grade" com o código do produto, pode ser que seu banco está mal estruturado.


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7

    • Sugerido como Resposta marcos alves quinta-feira, 17 de janeiro de 2013 15:12
    • Marcado como Resposta Guilherme Vada sábado, 19 de janeiro de 2013 12:24
    quinta-feira, 17 de janeiro de 2013 14:35

Todas as Respostas

  • Olá Guilherme,

    Sua dúvida é um pouco mais pertinente ao banco. Chaves estrangeiras não são autoincrement, elas são para garantir a integridade referencial da sua tabela.

    No seu caso, a IdCodProd (FK) garante que quando você colocar um código nesse campo, ele exista na tabela de produtos. Caso não existir ele retornará para você um "exception" de violação de chave estrangeira.

    Um campo chave primaria no caso pode ou não ser um auto-contador, isso dependerá de como a sua coluna foi projetada no banco de dados.

    Por tanto no seu caso a coluna IdGrade pode ser um auto-contador, mas IdCodProd não, esta somente poderá receber um código que já exista na tabela de produtos, mas esse relacionamento é "1 / n", o que quer dizer que em alguns casos você poderá ter códigos na tabela de produtos que não existam nunca na tabela grade, e que você tenha um mesmo código que apareca mais de uma vez.

    Se você necessita que toda vez que você inclua um novo produto na tabela "produtos" inclua-se um novo registro na tabela "grade" com o código do produto, pode ser que seu banco está mal estruturado.


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7

    • Sugerido como Resposta marcos alves quinta-feira, 17 de janeiro de 2013 15:12
    • Marcado como Resposta Guilherme Vada sábado, 19 de janeiro de 2013 12:24
    quinta-feira, 17 de janeiro de 2013 14:35
  • Então a chave estrangeira ela não atribui valor sozinha ? tipow quando eu adc valor na primary key ela nao atribui ?
    quinta-feira, 17 de janeiro de 2013 18:26
  • A Chave Estrangeira não recebe nenhum valor automático.


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7

    quinta-feira, 17 de janeiro de 2013 18:52