Array
(
)

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

Itamar Souza
   - 24 jul 2013

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'

Mariana Carvalho
   - 24 jul 2013

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

0
|
0

Joel Rodrigues
   - 24 jul 2013


Citação:
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.

0
|
0

Itamar Souza
   - 24 jul 2013

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!

0
|
0

Joel Rodrigues
   - 24 jul 2013

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.

0
|
0

Daniel Costa
   - 24 jul 2013

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

0
|
0