Modifica di relazioni di chiave esternaModify Foreign Key Relationships

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

È possibile modificare il lato chiave esterna di una relazione in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.You can modify the foreign key side of a relationship in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Cambiando la chiave esterna di una tabella vengono modificate le colonne correlate alle colonne della tabella della chiave primaria.Modifying a table’s foreign key changes which columns are related to columns in the primary key table.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

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:The new foreign key column must match the data type and size of the primary key column to which it relates, with these exceptions:

  • Una colonna char o sysname può essere correlata a una colonna varchar .A char column or sysname column can relate to a varchar column.

  • Una colonna binary può essere correlata a una colonna varbinary .A binary column can relate to a varbinary column.

  • Un tipo di dati alias può essere correlato al corrispondente tipo di base.An alias data type can relate to its base type.

Sicurezza Security

Autorizzazioni Permissions

È necessario disporre dell'autorizzazione ALTER per la tabella.Requires ALTER permission on the table.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per modificare una chiave esternaTo modify a foreign key

  1. In Esplora oggettiespandere la tabella contenente la chiave esterna, quindi espandere la cartella Chiavi.In Object Explorer, expand the table with the foreign key and then expand Keys.

  2. Fare clic con il pulsante destro del mouse sulla chiave esterna da modificare, quindi scegliere Modifica.Right-click the foreign key to be modified and select Modify.

  3. Nella finestra di dialogo Relazioni chiavi esterne è possibile apportare le modifiche riportate di seguito.In the Foreign Key Relationships dialog box, you can make the following modifications.

    Relazione selezionataSelected Relationship
    Vengono elencate le relazioni esistenti.Lists existing relationships. Selezionarne una per visualizzarne le proprietà nella griglia a destra.Select a relationship to show its properties in the grid to the right. Se l'elenco è vuoto, significa che per la tabella non sono state definite relazioni.If the list is empty, no relationships have been defined for the table.

    AggiungiAdd
    Crea una nuova relazione.Create a new relationship. È necessario impostare l'opzione Specifiche di tabelle e colonne per rendere valida la relazione.The Tables and Columns Specifications must be set before the relationship will be valid.

    DeleteDelete
    Elimina la relazione selezionata dall'elenco Relazione selezionata .Delete the relationship selected in the Selected Relationships list. Per annullare l'aggiunta di una relazione, utilizzare questo pulsante per rimuovere la relazione.To cancel the addition of a relationship, use this button to remove the relationship.

    Categoria GeneraleGeneral Category
    Viene espansa per visualizzare Verifica dati esistenti durante la creazione o la riabilitazione e Specifica tabelle e colonne.Expand to show Check Existing Data on Creation or RE-Enabling and Tables and Columns Specifications.

    Check Existing Data on Creation or Re-EnablingCheck 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.Verify all existing data in the table before the constraint was created or re-enabled, against the constraint.

    Categoria Specifica tabelle e colonneTables and Columns Specifications Category
    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.Expand to show which columns from which tables act as the foreign key and primary (or unique) key in the relationship. Per modificare o definire questi valori, fare clic sul pulsante con puntini di sospensione () a destra del campo della proprietà.To edit or define these values, click the ellipsis button () to the right of the property field.

    Tabella di base chiavi esterneForeign Key Base Table
    Visualizza la tabella in cui è contenuta la colonna che funge da chiave esterna nella relazione selezionata.Shows which table contains the column acting as a foreign key in the selected relationship.

    Colonne chiave esterneForeign Key Columns
    Visualizza la colonna che funge da chiave esterna nella relazione selezionata.Shows which column acts as a foreign key in the selected relationship.

    Tabella di base chiavi primarie/univochePrimary/Unique Key Base Table
    Visualizza la tabella in cui è contenuta la colonna che funge da chiave primaria o univoca nella relazione selezionata.Shows which table contains the column acting as a primary (or unique) key in the selected relationship.

    Colonne chiave primarie/univochePrimary/Unique Key Columns
    Visualizza la colonna che funge da chiave primaria o univoca nella relazione selezionata.Shows which column acts as a primary (or unique) key in the selected relationship.

    Categoria IdentitàIdentity Category
    Viene espansa per visualizzare i campi delle proprietà Nome e Descrizione.Expand to show the property fields for Name and Description.

    NomeName
    Visualizza il nome della relazione.Shows the name of the relationship. Quando viene creata una nuova relazione, le viene assegnato un nome predefinito sulla base della tabella presente nella finestra attiva di Progettazione tabelle.When a new relationship is created, it is given a default name based on the table in the active window in Table Designer. Il nome può essere modificato in qualunque momento.You can change the name at any time.

    DescrizioneDescription
    Descrive la relazione.Describe the relationship. Per inserire una descrizione più dettagliata, fare clic su Descrizione , quindi sui puntini di sospensione ( ) a destra del campo della proprietà.To write a more detailed description, click Description and then click the ellipsis (...) that appears to the right of the property field. Viene così visualizzata un'area più grande in cui scrivere il testo.This provides a larger area in which to write text.

    Categoria Progettazione tabelleTable Designer Category
    Viene espansa per visualizzare le informazioni relative a Verifica dati esistenti durante la creazione o la riabilitazione e Attiva per replica.Expand to show information for Check Existing Data on Creation or Re-Enabling and Enforce for Replication.

    Enforce For ReplicationEnforce For Replication
    Viene indicato se applicare il vincolo quando un agente di replica esegue un'inserimento, un aggiornamento o un'eliminazione in questa tabella.Indicates whether to enforce the constraint when a replication agent performs an insert, update, or delete on this table.

    Attiva vincolo della chiave esternaEnforce Foreign Key Constraint
    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.Specify whether changes are allowed to the data of the columns in the relationship if those changes would invalidate the integrity of the foreign key relationship. Fare clic su per non accettare tali modifiche e su No per accettarle.Choose Yes if you do not want to allow such changes, and choose No if you do want to allow them.

    Categoria Specifica INSERT e UPDATEINSERT and UPDATE Specification Category
    Viene espansa per visualizzare le informazioni relative a Elimina regola e Aggiorna regola per la relazione.Expand to show information for the Delete Rule and the Update Rule for the relationship.

    Elimina regolaDelete Rule
    Specifica che cosa accade se un utente tenta di eliminare una riga contenente dati coinvolti in una relazione di chiave esterna:Specify what happens if a user tries to delete a row with data that is involved in a foreign key relationship:

    • Nessuna azione Un messaggio di errore indica che l'eliminazione non è consentita e viene eseguito il rollback dell'operazione DELETE.No Action An error message tells the user that the deletion is not allowed and the DELETE is rolled back.

    • Sovrapponi Elimina tutte le righe che contengono dati coinvolti nella relazione di chiave esterna.Cascade Deletes all rows containing data involved in the foreign key relationship. Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.Do not specify CASCADE if the table will be included in a merge publication that uses logical records.

    • Set Null Consente di impostare il valore su Null se in tutte le colonne chiave esterna della tabella sono accettati valori Null.Set Null Sets the value to null if all foreign key columns for the table can accept null values.

    • Imposta predefinito Imposta il valore predefinito per la colonna se per tutte le colonne chiave esterna della tabella sono stati impostati valori predefiniti.Set Default Sets the value to the default value defined for the column if all foreign key columns for the table have defaults defined for them.

      Aggiorna regolaUpdate Rule
      Specifica ciò che accade se un utente tenta di aggiornare una riga contenente dati coinvolti in una relazione di chiave esterna:Specify what occurs if a user tries to update a row with data that is involved in a foreign key relationship:

    • Nessuna azione Un messaggio di errore indica che l'aggiornamento non è consentito e viene eseguito il rollback dell'operazione UPDATE.No Action An error message tells the user that the update is not allowed and the UPDATE is rolled back.

    • Sovrapponi Aggiorna tutte le righe che contengono dati coinvolti nella relazione di chiave esterna.Cascade Updates all rows that contain data involved in the foreign key relationship. Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.Do not specify CASCADE if the table will be included in a merge publication that uses logical records.

    • Set Null Consente di impostare il valore su Null se in tutte le colonne chiave esterna della tabella sono accettati valori Null.Set Null Sets the value to null if all foreign key columns for the table can accept null values.

    • 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.Set Default Sets the value to the default value that is defined for the column if all foreign key columns for the table have defaults defined for them.

  4. Nel menu File scegliere Salvatable name.On the File menu, click Savetable name.

Utilizzo di Transact-SQL Using Transact-SQL

Per modificare una chiave esternaTo modify a foreign key

Per modificare un vincolo FOREIGN KEY utilizzando Transact-SQL, è innanzitutto necessario eliminare il vincolo FOREIGN KEY esistente, quindi ricrearlo con la nuova definizione.To modify a FOREIGN KEY constraint by using Transact-SQL, you must first delete the existing FOREIGN KEY constraint and then re-create it with the new definition. Per ulteriori informazioni, vedere Delete Foreign Key Relationships e Create Foreign Key Relationships.For more information, see Delete Foreign Key Relationships and Create Foreign Key Relationships.