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

Comment ajouter une contrainte de clé étrangère à une table existante dans SQL Server - Tutoriel SQL Server / TSQL Partie 68

Scénario :

Vous avez déjà créé deux tables dbo.Customer et dbo.Orders. La clé primaire est créée sur la colonne CustomerId dans la table dbo.Customer.
USE YourDatabaseNameGOCREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) ) 
 
 
CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT )

Vous devez modifier la table dbo.Orders et ajouter une contrainte de clé étrangère pour CustomerId à partir de dbo.Customer.

Solution :

Comme les tables sont déjà présentes, le script ci-dessous peut être utilisé pour modifier la table dbo.Orders et ajouter une contrainte de clé étrangère.
Si la colonne existe déjà dans la deuxième table sur laquelle vous souhaitez créer une contrainte de clé étrangère, vous êtes bon d'exécuter le script ci-dessous. Comme nous n'avons pas la colonne dans la table, nous allons d'abord ajouter la colonne CustomerId dans la table dbo.Orders. Le nom de la colonne ne doit pas nécessairement correspondre à la première colonne de la table dans notre cas dbo.Customer.CustomerId
--Add new column to Table si vous n'avez pas Alter table dbo.Orders Add CustomerId int - -Ajouter une contrainte de clé étrangère sur la table existante Modifier la table dbo.Orders Ajouter une contrainte Fk_CustomerId Clé étrangère (CustomerId) Références dbo.Customer(CustomerId)
 
Créer une contrainte de clé étrangère sur les colonnes composites Le script ci-dessous peut être utilisé pour créer une contrainte de clé étrangère pour les colonnes composites.
USE YourDatabaseNameGOCREATE TABLE dbo.Customer ( Customerid INT Identity(1,1) ,FName VARCHAR(100) Not Null ,LName VARCHAR(100 ) ,SSN VARCHAR(10) Non Null, Contrainte Pk_FName_SSN Clé primaire (FName,SSN) ) CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,FirstName VARCHAR(100), SSN VARCHAR(10) non nul )
 Les colonnes existent déjà dans les deux tables, nous n'avons donc pas besoin d'ajouter des colonnes à la deuxième table. Nous avons seulement besoin de créer une contrainte de clé étrangère. Le script ci-dessous peut être utilisé pour créer une contrainte de clé étrangère pour les colonnes composites.
 Alter table dbo.Orders Add Constraint Fk_Order_Customer_FName_SSN FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Vous allez écrire la syntaxe de votre table
Modifier la table dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) References dbo.YourFirstTable(Column1FromPrimaryKey,Column2FromPrimaryKey)

Vidéo Démo :Comment ajouter une contrainte de clé étrangère à une table existante dans SQL Server