Cancellazione index SQL

venerdì 06 marzo 2009 - 13.59

fotw Profilo | Newbie

Ho uno scripts che crea ForeignKey ed Index su tabelle di una procedura..

Per le ForeignKey uso il seguente comando SQL per cancellarlo nel caso in cui esiste

IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'FK_NAME') AND OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE TABLE_NAME DROP CONSTRAINT FK_NAME
GO

Esiste un comando simile per cancellare un singolo Index (non primario) su una tabella?

Grazie e ciao

lbenaglia Profilo | Guru

>Esiste un comando simile per cancellare un singolo Index (non
>primario) su una tabella?
Cosa intendi con "singolo index non primario"?
Ad ogni modo per eliminare un indice esiste il comando T-SQL DROP INDEX:
http://msdn.microsoft.com/en-us/library/ms176118.aspx

>Grazie e ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fotw Profilo | Newbie

Intendo un indice creato cosi:

CREATE UNIQUE INDEX name_index
ON table_name (Colonna1, Colonna2, ecc...)


La cancellazione la eseguo con DROP INDEX name_table.name_index

Come faccio a sapere che l'indice esiste o no?

Quale tabella del catalogo di SQL devo interrogare e come la devo interrogare?
Grazie

Ciao

lbenaglia Profilo | Guru

>Intendo un indice creato cosi:
>
>CREATE UNIQUE INDEX name_index
> ON table_name (Colonna1, Colonna2, ecc...)
>
>
>La cancellazione la eseguo con DROP INDEX name_table.name_index
Questa è la vecchia sintassi ormai deprecata che verrà rimossa nelle prossime versioni di SQL Server.
La nuova sintassi rispetta lo standard ANSI SQL:

DROP INDEX <indice> ON <schema>.<tabella>;

>Come faccio a sapere che l'indice esiste o no?
>
>Quale tabella del catalogo di SQL devo interrogare e come la
>devo interrogare?
La sys.indexes:
http://msdn.microsoft.com/it-it/library/ms173760.aspx

USE tempdb; CREATE TABLE dbo.Students( StudentID int NOT NULL, FirstName varchar(10) NOT NULL ); CREATE UNIQUE CLUSTERED INDEX IX_CL_Students ON dbo.Students(StudentID); IF EXISTS( SELECT * FROM sys.indexes WHERE name = N'IX_CL_Students' ) BEGIN DROP INDEX IX_CL_Students ON dbo.Students; END DROP TABLE dbo.Students;

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5