Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment ajouter une contrainte de clé étrangère à une table existante dans SQL Server (T-SQL)

En termes de base de données, une clé étrangère est une colonne liée au champ de clé primaire d'une autre table dans une relation entre deux tables.

Une clé étrangère est un type de contrainte, et donc si vous voulez créer une clé étrangère dans SQL Server, vous devrez créer une contrainte de clé étrangère.

Cet article montre comment créer une contrainte de clé étrangère dans SQL Server, à l'aide de Transact-SQL.

Exemple

La façon la plus simple de le démontrer est avec un exemple. Dans cet exemple, nous utilisons T-SQL pour créer une contrainte de clé étrangère à l'aide de ALTER TABLE déclaration :

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

Cela crée une relation entre deux tables (les Albums table et les Artists) table). Pour ce faire, nous créons une contrainte de clé étrangère sur les Albums table. Nous spécifions que le Albums.ArtistId la colonne est une clé étrangère vers Artists.ArtistId colonne.

Cela suppose évidemment que les deux tables existent. S'ils ne le faisaient pas, nous aurions une erreur.

Nous utilisons également GO qui ne fait pas réellement partie de T-SQL. Il est reconnu par divers utilitaires pour signaler la fin d'un lot d'instructions T-SQL.

Vérifier le résultat

Vous pouvez vérifier le résultat en exécutant le script suivant :

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

Cela répertorie les clés étrangères dans le Music base de données. Modifiez le nom de la base de données en conséquence.

Si votre base de données a trop de clés étrangères, vous pouvez toujours la réduire avec un WHERE clause à la clé étrangère spécifique qui vous intéresse. Vous pouvez également utiliser le caractère générique (* ) si vous avez besoin que toutes les colonnes soient renvoyées.