Modificare relazioni di chiave esterna
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
È possibile modificare il lato chiave esterna di una relazione in SQL Server usando SQL Server Management Studio o Transact-SQL. Cambiando la chiave esterna di una tabella vengono modificate le colonne correlate alle colonne della tabella della chiave primaria.
Contenuto dell'articolo
Prima di iniziare:
Per modificare una chiave esterna tramite:
Prima di iniziare
Limitazioni e restrizioni
La nuova colonna chiave esterna deve avere lo stesso tipo di dati e la stessa dimensione della colonna chiave primaria a cui è correlata, con le seguenti eccezioni:
Una colonna char o sysname può essere correlata a una colonna varchar .
Una colonna binary può essere correlata a una colonna varbinary .
Un tipo di dati alias può essere correlato al corrispondente tipo di base.
Sicurezza
Autorizzazioni
È necessario disporre dell'autorizzazione ALTER per la tabella.
Utilizzo di SQL Server Management Studio
Per modificare una chiave esterna
In Esplora oggettiespandere la tabella contenente la chiave esterna, quindi espandere la cartella Chiavi.
Fare clic con il pulsante destro del mouse sulla chiave esterna da modificare, quindi scegliere Modifica.
Nella finestra di dialogo Relazioni chiavi esterne è possibile apportare le modifiche riportate di seguito.
Relazione selezionata
Vengono elencate le relazioni esistenti. Selezionarne una per visualizzarne le proprietà nella griglia a destra. Se l'elenco è vuoto, significa che per la tabella non sono state definite relazioni.Aggiunta
Crea una nuova relazione. È necessario impostare l'opzione Specifiche di tabelle e colonne per rendere valida la relazione.CANC
Elimina la relazione selezionata dall'elenco Relazione selezionata . Per annullare l'aggiunta di una relazione, utilizzare questo pulsante per rimuovere la relazione.Categoria Generale
Viene espansa per visualizzare Verifica dati esistenti durante la creazione o la riabilitazione e Specifica tabelle e colonne.Check Existing Data on Creation or Re-Enabling
Consente di verificare in base al vincolo tutti i dati esistenti nella tabella prima della creazione o della riabilitazione del vincolo.Categoria Specifica tabelle e colonne
Viene espansa per visualizzare le colonne che fungono da chiave esterna e chiave primaria o univoca nella relazione, nonché le tabelle in cui sono contenute. Per modificare o definire questi valori, fare clic sul pulsante con puntini di sospensione (...) a destra del campo della proprietà.Tabella di base chiavi esterne
Visualizza la tabella in cui è contenuta la colonna che funge da chiave esterna nella relazione selezionata.Colonne chiave esterne
Visualizza la colonna che funge da chiave esterna nella relazione selezionata.Tabella di base chiavi primarie/univoche
Visualizza la tabella in cui è contenuta la colonna che funge da chiave primaria o univoca nella relazione selezionata.Colonne chiave primarie/univoche
Visualizza la colonna che funge da chiave primaria o univoca nella relazione selezionata.Categoria Identità
Viene espansa per visualizzare i campi delle proprietà Nome e Descrizione.Nome
Visualizza il nome della relazione. Quando viene creata una nuova relazione, le viene assegnato un nome predefinito sulla base della tabella presente nella finestra attiva di Progettazione tabelle. È possibile modificare il nome in qualsiasi momento.Descrizione
Descrive la relazione. Per inserire una descrizione più dettagliata, fare clic su Descrizione , quindi sui puntini di sospensione ( … ) a destra del campo della proprietà. Viene così visualizzata un'area più grande in cui scrivere il testo.Categoria Progettazione tabelle
Viene espansa per visualizzare le informazioni relative a Verifica dati esistenti durante la creazione o la riabilitazione e Attiva per replica.Applicare per replica
Viene indicato se applicare il vincolo quando un agente di replica esegue un'inserimento, un aggiornamento o un'eliminazione in questa tabella.Attiva vincolo della chiave esterna
Viene specificato se le modifiche ai dati delle colonne coinvolte nella relazione sono consentite quando rischiano di compromettere l'integrità della relazione di chiave esterna. Fare clic su Sì per non accettare tali modifiche e su No per accettarle.Categoria Specifica INSERT e UPDATE
Viene espansa per visualizzare le informazioni relative a Elimina regola e Aggiorna regola per la relazione.Elimina regola
Specifica che cosa accade se un utente tenta di eliminare una riga contenente dati coinvolti in una relazione di chiave esterna:Nessuna azione Un messaggio di errore indica che l'eliminazione non è consentita e viene eseguito il rollback dell'operazione DELETE.
Sovrapponi Elimina tutte le righe che contengono dati coinvolti nella relazione di chiave esterna. Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.
Set Null Consente di impostare il valore su Null se in tutte le colonne chiave esterna della tabella sono accettati valori Null.
Imposta predefinito Imposta il valore predefinito per la colonna se per tutte le colonne chiave esterna della tabella sono stati impostati valori predefiniti.
Aggiorna regola
Specifica ciò che accade se un utente tenta di aggiornare una riga contenente dati coinvolti in una relazione di chiave esterna:Nessuna azione Un messaggio di errore indica che l'aggiornamento non è consentito e viene eseguito il rollback dell'operazione UPDATE.
Sovrapponi Aggiorna tutte le righe che contengono dati coinvolti nella relazione di chiave esterna. Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.
Set Null Consente di impostare il valore su Null se in tutte le colonne chiave esterna della tabella sono accettati valori Null.
Imposta predefinito Viene impostato il valore predefinito stabilito per la colonna se per tutte le colonne chiave esterna della tabella sono stati impostati valori predefiniti.
Scegliere Salvanome tabella dal menu File.
Utilizzo di Transact-SQL
Per modificare una chiave esterna
Per modificare un vincolo FOREIGN KEY utilizzando Transact-SQL, è innanzitutto necessario eliminare il vincolo FOREIGN KEY esistente, quindi ricrearlo con la nuova definizione. Per ulteriori informazioni, vedere Delete Foreign Key Relationships e Create Foreign Key Relationships.