Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come aggiungere un vincolo di chiave esterna a una tabella esistente in SQL Server (T-SQL)

In termini di database, una chiave esterna è una colonna collegata al campo della chiave primaria di un'altra tabella in una relazione tra due tabelle.

Una chiave esterna è un tipo di vincolo, quindi se desideri creare una chiave esterna in SQL Server, dovrai creare un vincolo di chiave esterna.

Questo articolo illustra come creare un vincolo di chiave esterna in SQL Server, usando Transact-SQL.

Esempio

Il modo più semplice per dimostrarlo è con un esempio. In questo esempio, utilizziamo T-SQL per creare un vincolo di chiave esterna utilizzando ALTER TABLE dichiarazione:

USE Music;
ALTER TABLE Albums
  ADD CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
      REFERENCES dbo.Artists (ArtistId)
      ON DELETE CASCADE    
      ON UPDATE CASCADE
  ;
GO

Questo crea una relazione tra due tabelle (gli Albums tabella e il Artists) tavolo). A tale scopo, creiamo un vincolo di chiave esterna sugli Albums tavolo. Specifichiamo che il Albums.ArtistId la colonna è una chiave esterna per Artists.ArtistId colonna.

Questo ovviamente presuppone che le due tabelle esistano. In caso contrario, riceveremmo un errore.

Usiamo anche GO che in realtà non fa parte di T-SQL. È riconosciuto da varie utilità per segnalare la fine di un batch di istruzioni T-SQL.

Verifica il risultato

Puoi controllare il risultato eseguendo il seguente script:

USE Music;
SELECT 
    name,
    type_desc,
    delete_referential_action_desc,
    update_referential_action_desc
FROM sys.foreign_keys;
GO

Questo elenca le chiavi esterne in Music Banca dati. Cambia il nome del database per adattarlo.

Se il tuo database ha troppe chiavi esterne, puoi sempre restringerlo con un WHERE clausola alla chiave esterna specifica che ti interessa. Puoi anche utilizzare il carattere jolly (* ) se è necessario restituire tutte le colonne.