SQL SERVER – 2008 – Création d’une Clé Primaire, d’une Clé Étrangère et d’une Contrainte par Défaut
La clé primaire, la Clé Étrangère et la contrainte par Défaut sont les 3 principales contraintes à prendre en compte lors de la création de tables ou même après. Il semble très facile d’appliquer ces contraintes mais nous avons quand même quelques confusions et problèmes lors de sa mise en œuvre. J’ai donc essayé d’écrire sur ces contraintes qui peuvent être créées ou ajoutées à différents niveaux et de différentes manières ou méthodes.Contrainte de clé primaire
: Les contraintes de clés primaires empêchent les valeurs en double pour les colonnes et fournissent un identifiant unique à chaque colonne, ainsi qu’un index en cluster sur les colonnes.
1) Instruction Create Table pour créer une clé primaire
a. Niveau Colonne
USE AdventureWorks2008GOCREATE TABLE Products(ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,ProductName VARCHAR(25));GO
d. Niveau de la Table
CREATE TABLE Products(ProductID INT,ProductName VARCHAR(25)CONSTRAINT pk_products_pid PRIMARY KEY(ProductID));GO
2) Instruction Alter Table pour créer une clé primaire
ALTER TABLE ProductsADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)GO
3) Alter Instruction pour supprimer la clé primaire
ALTER TABLE ProductsDROP CONSTRAINT pk_products_pid;GO
Contrainte de Clé Étrangère: Lorsqu’une contrainte de CLÉ ÉTRANGÈRE est ajoutée à une ou plusieurs colonnes existantes dans la table SQL Server, vérifie par défaut les données existantes dans les colonnes pour s’assurer que toutes les valeurs, à l’exception de NULL, existent dans la ou les colonnes de la CLÉ PRIMAIRE référencée ou de la contrainte UNIQUE.
1) Instruction Create Table pour créer une clé étrangère
a. Niveau Colonne
USE AdventureWorks2008GOCREATE TABLE ProductSales(SalesID INT CONSTRAINT pk_productSales_sid PRIMARY KEY,ProductID INT CONSTRAINT fk_productSales_pid FOREIGN KEY REFERENCES Products(ProductID),SalesPerson VARCHAR(25));GO
d. Niveau de la Table
CREATE TABLE ProductSales(SalesID INT,ProductID INT,SalesPerson VARCHAR(25)CONSTRAINT pk_productSales_sid PRIMARY KEY(SalesID),CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID));GO
1) Instruction Alter Table pour créer une clé étrangère
ALTER TABLE ProductSalesADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)GO
2) Instruction Alter Table pour supprimer la clé étrangère
ALTER TABLE ProductSalesDROP CONSTRAINT fk_productSales_pid;GO
Contrainte par défaut : Une contrainte par défaut créée sur une colonne aura les données par défaut qui sont données dans la contrainte lorsqu’aucun enregistrement ou donnée n’est inséré dans cette colonne.
1) Créer une instruction Table pour créer une Contrainte par défaut
a. Niveau Colonne
USE AdventureWorks2008GOCREATE TABLE Customer(CustomerID INT CONSTRAINT pk_customer_cid PRIMARY KEY,CustomerName VARCHAR(30),CustomerAddress VARCHAR(50) CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN');GO
b. Niveau de la Table : Ne s’applique pas à la Contrainte par défaut
2) Alter Table Instruction pour ajouter une contrainte par défaut
ALTER TABLE CustomerADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddressGO
3) Modifier la Table pour Supprimer la Contrainte par défaut
ALTER TABLE CustomerDROP CONSTRAINT df_customer_AddGO