ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

descobrir a primary key?(RESOLVIDO)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
FernandoCartaxo
Novato
Novato


Registrado: Segunda-Feira, 27 de Março de 2006
Mensagens: 97

MensagemEnviada: Qua Jan 24, 2007 11:36 am    Assunto: descobrir a primary key?(RESOLVIDO) Responder com Citação

quero descobrir qual é a primary key de uma tabela, como faço?

eu fiz um cursor com o nome de todas as tabelas do meu banco e quero saber de cada tabela qual é a chave primaria, pra saber qual o count dela

como faço?

procurei comandos como 'isPrimaryKey' e outros parecidos, procurei por campos na tabela syscolumns e também não achei...

alguem me dá uma ajuda?

obrigado


Editado pela última vez por FernandoCartaxo em Qui Jan 25, 2007 7:45 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
FernandoCartaxo
Novato
Novato


Registrado: Segunda-Feira, 27 de Março de 2006
Mensagens: 97

MensagemEnviada: Qui Jan 25, 2007 7:44 pm    Assunto: Responder com Citação

Achei a resposta de minha dúvida em outro site, e estou postando para não ficar a pergunta em aberto, e caso alguem também tenha a mesma dúvida, está aí a resposta.
esse SELECT trás outros dados, não só qual o campo é a primary key
Código:

SELECT user_name(obj.uid) as UserName,
       obj.id as TableID,
       obj.name as TableName, col.name as FieldName,
       col.colorder as ColumnOrder,
       type_name(col.xusertype) +
   CASE WHEN type_name(col.xusertype) = 'varchar'
     THEN '(' + convert(varchar,convert(int, prec)) + ')'
        WHEN type_name(col.xusertype) = 'nvarchar'
     THEN  '(' + convert(varchar,convert(int, prec)) + ')'
        WHEN type_name(col.xusertype) = 'char'
     THEN  '(' + convert(varchar,convert(int, prec)) + ')'
        WHEN type_name(col.xusertype) = 'nchar'
     THEN  '(' + convert(varchar,convert(int, prec)) + ')'
   ELSE
    convert(varchar,'')
   END AS DataType,
      CASE WHEN index_col(obj.name, 1, col.colorder) != '' THEN 'Yes' ELSE 'No' END AS IsPK,
      convert(varchar, pro.value) as ColumnComments,
CASE col.IsNullable WHEN 1 THEN 'Yes' ELSE 'No' END AS IsNullable FROM sysobjects obj
INNER JOIN syscolumns col on obj.id = col.id
LEFT JOIN sysobjects def on obj.id = def.parent_obj and def.info = col.colorder and def.xtype in ('D ')
LEFT JOIN syscomments com on def.id = com.id
LEFT JOIN sysproperties pro on obj.id = pro.id and col.colorder = pro.smallid
left join sysproperties prot on prot.id = obj.id and prot.smallid = 0
WHERE obj.xtype = 'U' AND obj.name != 'dtproperties' AND obj.name LIKE 'SAU%'
ORDER BY object_name(obj.id), col.colorder
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB