none
Como descobrir qual campo é o campo primary key das tabelas de meu BD? RRS feed

  • Pergunta

  • Olá pessoal,

    Estou tentando montar uma query que me retorne todas tabelas do meu BD juntamente com os campos que são primary key.
    Tentei dar um select na tabela sysobjects e relacionar com a sys.key_constraints, mas não consegui encontrar nada.
    A INFORMATION_SCHEMA.KEY_COLUMN_USAGE até me retorna os campos com tabelas e campos que são código, só que ele me retorna até as FK, isso não teria tanto problema, pois eu conseguiria tratar via código, mas eu gostaria de saber se tem como retornar isso de forma mais efeitva. Sem precisar fazer tratamentos via código para descobrir se o registro selecionado é PK ou FK.

    Agradeço desde já!

    segunda-feira, 7 de outubro de 2013 11:33

Respostas

  • Tente desta forma:

    SELECT table_name AS TABELA, column_name AS COLUNA
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1


    Leonardo D'Amato

    segunda-feira, 7 de outubro de 2013 11:39

Todas as Respostas

  • Tente desta forma:

    SELECT table_name AS TABELA, column_name AS COLUNA
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1


    Leonardo D'Amato

    segunda-feira, 7 de outubro de 2013 11:39
  • Normalmente, o campo definido como chave primária é o campo ID. Faça um select que passe esse campo para que o mesmo seja retornado.

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    segunda-feira, 7 de outubro de 2013 11:42
  • É, normalmente seria, mas no bd que estou não tem padrão, então cada hora aparece um nome.

    A solução do Leonardo já resolveu, valeu a todos!

    segunda-feira, 7 de outubro de 2013 11:45