| 
			
				|  | ActiveDelphi .: O site do programador Delphi! :.
 
 |  
 
	
		| Exibir mensagem anterior :: Exibir próxima mensagem |  
		| Autor | Mensagem |  
		| FernandoCartaxo Novato
 
  
 
 Registrado: Segunda-Feira, 27 de Março de 2006
 Mensagens: 97
 
 
 | 
			
				|  Enviada: Qua Jan 24, 2007 11:36 am    Assunto: descobrir a primary key?(RESOLVIDO) |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| FernandoCartaxo Novato
 
  
 
 Registrado: Segunda-Feira, 27 de Março de 2006
 Mensagens: 97
 
 
 | 
			
				|  Enviada: Qui Jan 25, 2007 7:44 pm    Assunto: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		|  |  
  
	| 
 
 | Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido
 Editar Mensagens: Proibido.
 Excluir Mensagens: Proibido.
 Votar em Enquetes: Proibido.
 
 |  |