Lista tipo dos campos - consulta das chaves primarias de uma tabela?

24/07/2013

0

Boa tarde a todos

Seria possível a consulta das chaves primarias de uma tabela?
Tenho o comando a baixo que me lista todos os campos de uma tabela do meu banco de dados, a dúvida é como saber qual campo e chave primaria e caso tenha FK mostra tambêm. Alguém sabe como listas estas informações?
Agradeço

SELECT COLUMN_NAME ,IS_NULLABLE , DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TBARQUIVO'
Itamar Souza

Itamar Souza

Responder

Posts

24/07/2013

Joel Rodrigues

Opa.
Talvez este link te ajude: [url]http://blog.sqlauthority.com/2009/07/17/sql-server-two-methods-to-retrieve-list-of-primary-keys-and-foreign-keys-of-database/[/url]
Responder

24/07/2013

Mariana Carvalho

esses comando são mais para a parte admin do banco não é?
Responder

24/07/2013

Joel Rodrigues

esses comando são mais para a parte admin do banco não é?

É muito relativo, depende muito da necessidade. Quem precisar, usa, até mesmo o programador do sistema que acessa o banco.
Responder

24/07/2013

Itamar Souza

Valeu amigos!!

Conseguir fazer o que precisava! fica ai a dica para todos.

--listas todas as FK e a chave primária
SELECT CONSTRAINT_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'TBARQUIVO'

--descobre em qual tabela do banco a FK ou chave primária esta
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = 'NomeBanco' and COLUMN_NAME = 'ID_ARQUIVO'
and ORDINAL_POSITION = 1

Muito Agradecido!
Responder

24/07/2013

Joel Rodrigues

Show de bola, Itamar. Que bom que conseguiu.
Neste caso, estou marcando o tópico como Concluído para que outros usuários possam consultá-lo como referência posteriormente.
Responder

24/07/2013

Daniel Costa

Só pra acrescentar, essa puxa a definição da tabela, as chaves tem a coluna isKey = 1

select
s.name as schema_name, o.name as table_name, c.name, type_name(c.system_type_id) as tipo,
c.max_length, c.precision, isnull(i.is_primary_key, 0) as iskey, c.is_nullable,
c.is_computed as autoincrementa ,c.scale
from
sys.objects o
inner join sys.columns c on o.object_id = c.object_id
inner join sys.schemas s on o.schema_id = s.schema_id
left join sys.index_columns ic on ic.column_id = c.column_id and ic.object_id = c.object_id
left join sys.indexes i on i.index_id = ic.index_id and ic.object_id = i.object_id
where
o.type_desc = 'user_table' and o.name = @tabela and s.name = @esquema
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar