2011-05-03 19 views
48

Ho il seguente:Come posso controllare se un indice non cluster esiste in SQL Server 2005

CREATE NONCLUSTERED INDEX [MyTableIndex] 
ON [dbo].[tablename] ([tablename_ID],[tablename_Field1]) 
INCLUDE ([Tablename_Field2],[Tablename_Field3]) 

voglio creare un'istruzione if per verificare se questo esiste. Come faccio a fare questo?

+1

Eventuali duplicati di http://stackoverflow.com/questions/2689766/how-do-you-check-if-a-certain-index-exists-in -a-table –

risposta

109
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'MyTableIndex' AND object_id = OBJECT_ID('tablename')) 
    BEGIN 
     -- Index with this name, on this table does NOT exist 
    END 
+0

+1 Funziona bene. Dovrebbe o non essere preoccupato per lo schema della tabella? – gotqn

+7

@gotqn: per prendere in considerazione lo schema, è sufficiente includerlo come nome in due parti nella chiamata OBJECT_ID, ad es. OBJECT_ID ('myschema.tablename') – AdaTheDev

+0

Grazie per questa spiegazione: -] – gotqn

14

Prova questo:

IF NOT EXISTS(SELECT * FROM sys.indexes WHERE Name = 'MyTableIndex') 
    -- put your CREATE INDEX statement here 
+2

Si consiglia anche di verificare object_id (come da AdaTheDev's answer) in quanto i nomi degli indici non sono univoci. – mcNux

Problemi correlati