Sto cercando di memorizzare qualche sintassi sql e ho ottenuto la sintassi ALTER TABLE ADD CONSTRAINT. Credo di essere corretto quando dico che quando si utilizza questa sintassi per aggiungere un vincolo FOREIGN KEY o PRIMARY KEY, quel server SQL crea automaticamente indici per supportare le operazioni di vincolo. (È vero ... o è vero solo sul PK ma non sul FK?)Quando si rilascia un vincolo, anche gli indici di supporto vengono eliminati?
In tal caso, quando si utilizza la sintassi ALTER TABLE DROP CONSTRAINT ... anche gli indici di supporto vengono automaticamente ignorati? È possibile eliminare esplicitamente questi indici di supporto impliciti? In tal caso, il CONSTRAINT viene rimosso automaticamente?
Sto solo volendo sapere come funziona "sotto le coperte". Googling non ha aiutato. Immagino che avrei potuto interrogare alcuni tavoli sys per scoprire la verità, ma ho pensato di provare qui.
Grazie per il vostro aiuto.
Seth
Non sempre vero. Se esiste già un indice cluster sulla tabella, il vincolo PRIMARY KEY verrà applicato da un indice non cluster univoco. –
In SQL Server 2008 le chiavi esterne hanno qualcosa in comune con gli indici. Non potevo rilasciare un indice (e non era indice della chiave primaria), perché se ci si riferiva a chiavi esterne. – LukLed
@LukLed, quando si ha una relazione genitore-figlio da 1 a molti applicata con un FK, il genitore deve essere univoco, se si tenta di eliminare il vincolo di unicità sul genitore, si genera un errore. –