Diferenciar indices en SQL

21/11/2004 - 02:00 por Joan Carles Jiménez | Informe spam
Hola a todos.

Tengo la siguiente consulta ...

SELECT sysobjects.name AS tblname, sysindexes.name AS idxname,
syscolumns.name AS fldname
FROM sysobjects, sysindexes, syscolumns, sysindexkeys WHERE sysobjects.id sysindexes.id
AND sysindexes.id = sysindexkeys.id AND sysindexes.indid sysindexkeys.indid AND
sysindexkeys.id = syscolumns.id AND sysindexkeys.colid = syscolumns.colid
ORDER BY sysobjects.name, sysindexes.name, sysindexkeys.colid

Con ella puedo saber que indices tiene cada tabla y que campos forman el
indice. Ahora bien, ¿Como puedo saber si se trata de un indice primario o
"unique"?

Gracias por todo.

Joan Carles.
jjcarles@terra.es

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
21/11/2004 - 15:32 | Informe spam
Usa la función INDEXPROPERTY, los detalles los tienes en los Books Online
(BOL) de tu instalación. Si quieres un buen ejemplo de uso, mira el código
fuente del sproc master.dbo.sp_helpindex.

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Joan Carles Jiménez" wrote in message
news:
Hola a todos.

Tengo la siguiente consulta ...

SELECT sysobjects.name AS tblname, sysindexes.name AS idxname,
syscolumns.name AS fldname
FROM sysobjects, sysindexes, syscolumns, sysindexkeys WHERE sysobjects.id
> sysindexes.id
AND sysindexes.id = sysindexkeys.id AND sysindexes.indid > sysindexkeys.indid AND
sysindexkeys.id = syscolumns.id AND sysindexkeys.colid = syscolumns.colid
ORDER BY sysobjects.name, sysindexes.name, sysindexkeys.colid

Con ella puedo saber que indices tiene cada tabla y que campos forman
el
indice. Ahora bien, ¿Como puedo saber si se trata de un indice primario o
"unique"?

Gracias por todo.

Joan Carles.



Respuesta Responder a este mensaje
#2 MAXI
21/11/2004 - 17:00 | Informe spam
Hola, no soy amante del uso de las tablas de sistema pero buee, aca te paso
como podes hacer lo que pedis

=
SELECT sysobjects.name AS tblname, sysindexes.name AS idxname,
CASE WHEN objectproperty(object_id(sysindexes.name),'IsPrimaryKey') = 1 THEN
'S' ELSE 'N' END as PK,
syscolumns.name AS fldname
FROM sysobjects, sysindexes, syscolumns, sysindexkeys WHERE sysobjects.id sysindexes.id
AND sysindexes.id = sysindexkeys.id AND sysindexes.indid sysindexkeys.indid AND
sysindexkeys.id = syscolumns.id AND sysindexkeys.colid = syscolumns.colid
ORDER BY sysobjects.name, sysindexes.name, sysindexkeys.colid

==



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Joan Carles Jiménez" escribió en el mensaje
news:
Hola a todos.

Tengo la siguiente consulta ...

SELECT sysobjects.name AS tblname, sysindexes.name AS idxname,
syscolumns.name AS fldname
FROM sysobjects, sysindexes, syscolumns, sysindexkeys WHERE sysobjects.id
> sysindexes.id
AND sysindexes.id = sysindexkeys.id AND sysindexes.indid > sysindexkeys.indid AND
sysindexkeys.id = syscolumns.id AND sysindexkeys.colid = syscolumns.colid
ORDER BY sysobjects.name, sysindexes.name, sysindexkeys.colid

Con ella puedo saber que indices tiene cada tabla y que campos forman
el
indice. Ahora bien, ¿Como puedo saber si se trata de un indice primario o
"unique"?

Gracias por todo.

Joan Carles.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida