2008-10-23 11 views

Respuesta

7

No tengo inmediatamente una base de datos a mano para probar esto, pero debería poder ver si existe una columna en un índice utilizando la siguiente instrucción IF EXISTS.

No estoy seguro de si puede modificar un índice sobre la marcha.

IF EXISTS 
(
    SELECT MyIndex.Name AS IndexName, 
      Columns.name AS ColumnName 
    FROM sys.indexes MyIndex 
    INNER JOIN sys.index_columns IndexColumns 
     ON MyIndex.index_id = IndexColumns.index_id 
     AND MyIndex.object_id = IndexColumns.object_id 
    INNER JOIN sys.columns Columns 
     ON Columns.column_id = IndexColumns.column_id 
     AND IndexColumns.object_id = Columns.object_id 
    WHERE Columns.name = 'ColumnName' 
    AND MyIndex.Name='IX_MyIndexName' 
) 
4

Gracias por su ayuda, Ed. Aquí está la solución que escribí usando la tuya como inicio. Ha sido verificado. Básicamente tiene todas las combinaciones correctas.

 

IF EXISTS 
(
    SELECT i.Name AS IndexName, c.Name AS ColumnName 
    FROM sys.indexes i 
     JOIN sys.index_columns ic 
      ON i.object_id = ic.object_id AND i.index_id = ic.index_id 
     JOIN sys.columns c 
      ON ic.object_id = c.object_id AND c.column_id = ic.column_id 
    WHERE c.Name = 'MyColumnName' AND i.Name='MyIndexName' 
) 
 
+0

He reparado mi respuesta para incluir esa otra condición de unión. Me alegra que pueda ser de ayuda. Puede considerar marcar su respuesta o la respuesta correcta. –

Cuestiones relacionadas