Uma pergunta simples: como você lista a chave primária de uma tabela com T-SQL? Eu sei como obter índices em uma tabela, mas não me lembro como obter o PK.
sql
sql-server
tsql
Swilliams
fonte
fonte
a
,b
ec
, (nessa ordem), então minha mesa tem uma chave primário composto deabc
?Geralmente, é uma prática recomendada agora usar as
sys.*
visualizaçõesINFORMATION_SCHEMA
no SQL Server, portanto, a menos que você esteja planejando migrar bancos de dados, eu as usaria. Veja como você faria isso com assys.*
visualizações:fonte
Esta é uma solução que usa apenas tabelas sys .
Ele lista todas as chaves primárias no banco de dados. Ele retorna o esquema, o nome da tabela, o nome da coluna e a ordem de classificação correta da coluna para cada chave primária.
Se você deseja obter a chave primária para uma tabela específica, precisa filtrar
SchemaName
eTableName
.IMHO, esta solução é muito genérica e não usa literais de string, por isso será executada em qualquer máquina.
fonte
Aqui está outra maneira da questão obter a chave primária da tabela usando a consulta sql :
Ele usa
KEY_COLUMN_USAGE
para determinar as restrições para uma dada tabelaDepois usa para determinar se cada uma é uma chave primária
OBJECTPROPERTY(id, 'IsPrimaryKey')
fonte
Eu gosto da técnica INFORMATION_SCHEMA, mas outra que usei é: exec sp_pkeys 'table'
fonte
Se estiver usando o MS SQL Server, você pode fazer o seguinte:
Você também pode filtrar na coluna nome_tabela se quiser uma tabela específica.
fonte
--Esta é outra versão modificada que também é um exemplo para consulta correlacionada
fonte
Isso deve listar todas as restrições (chave primária e chaves estrangeiras) e no final da consulta colocar o nome da tabela
Para referência, leia - http://blogs.msdn.com/b/sqltips/archive/2005/09/16/469136.aspx
fonte
fonte
Obrigado cara.
Com uma ligeira variação, usei-o para encontrar todas as chaves primárias para todas as tabelas.
fonte
fonte
Este fornece as colunas que são PK.
fonte
O procedimento armazenado do sistema
sp_help
fornecerá as informações. Execute a seguinte declaração:fonte
A consulta abaixo listará as chaves primárias de uma tabela específica :
fonte
Estou contando uma técnica simples que sigo
execute este código como consulta. Mencione o nome da sua tabela no lugar de table_name para a qual deseja saber a chave primária (não se esqueça das aspas simples). O resultado aparecerá como imagem anexada. Espero que ajude você
fonte
Para uma lista separada por vírgulas de colunas de chave primária para um determinado TableName e Schema:
fonte
Experimente:
fonte
Esta versão exibe o esquema, o nome da tabela e uma lista ordenada separada por vírgulas de chaves primárias. Object_Id () não funciona para servidores de link, então filtramos pelo nome da tabela.
Sem REPLACE (Si1.Column_Name, '', '') ele mostraria as tags de abertura e fechamento xml para Column_Name no banco de dados que eu estava testando. Não sei por que o banco de dados solicitou uma substituição de 'Nome_da_coluna', então, se alguém souber, por favor, comente.
E o mesmo padrão usando a consulta de George:
fonte
Achei isso útil, fornece uma lista de tabelas com uma lista separada por vírgulas das colunas e também uma lista separada por vírgulas das quais são a chave primária
fonte
fonte
Posso sugerir uma resposta simples mais precisa para a pergunta original abaixo
Notas:
fonte
Pode ter sido postado recentemente, mas espero que isso ajude alguém a ver a lista de chaves primárias no servidor sql usando esta consulta t-sql:
Você pode ver a lista de todas as chaves estrangeiras usando esta consulta se desejar:
fonte
Achei isso do meu amigo muito eficaz se você estiver procurando por todas as chaves primárias da tabela em um esquema específico.
fonte
Se você está procurando fazer seu próprio ORM ou gerar código a partir de uma determinada tabela, então isso pode ser o que você está procurando:
Aqui está a aparência do resultado:
fonte
Se a chave primária e o tipo forem necessários, esta consulta pode ser útil:
fonte