Partie I
SQL de base
72
© Éditions Eyrolles
peut même les élaborer par ordre alphabétique), puis d’ajouter les contraintes. Les outils de
conception (Win’Design, Designer ou PowerAMC) adoptent cette démarche lors de la génération automatique de scripts SQL.
La directive ADD CONSTRAINT de l’instruction ALTER TABLE permet d’ajouter une contrainte
à une table. Il est aussi possible d’ajouter un index. La syntaxe générale est la suivante :
ALTER TABLE [nomBase].nomTable ADD
{ INDEX [nomIndex] [typeIndex] (nomColonne1,...)
| CONSTRAINT nomContrainte typeContrainte }
Trois types de contraintes sont possibles :
q
UNIQUE (colonne1 [,colonne2]...)
q
PRIMARY KEY (colonne1 [,colonne2]...)
q
FOREIGN KEY (colonne1 [,colonne2]...)
REFERENCES nomTablePère (col1 [,col2]...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
Unicité
Ajoutons la contrainte d’unicité portant sur la colonne du nom de la compagnie. Un index est
automatiquement généré sur cette colonne à présent :
ALTER TABLE Compagnie ADD CONSTRAINT un_nomC UNIQUE (nomComp);
Clé étrangère
Ajoutons la clé étrangère (indexée) à la table Avion au niveau de la colonne proprio en lui
assignant une contrainte NOT NULL :
ALTER TABLE Avion ADD INDEX (proprio);
ALTER TABLE Avion ADD CONSTRAINT fk_Avion_comp_Compag
FOREIGN KEY(proprio) REFERENCES Compagnie(comp);
ALTER TABLE Avion MODIFY proprio CHAR(4) NOT NULL;
Clé primaire
Ajoutons à la table Affreter, en une seule instruction, sa clé primaire et deux clés étrangères (une vers la table Avion et l’autre vers Compagnie) :
ALTER TABLE Affrete ADD (
CONSTRAINT pk_Affreter
PRIMARY KEY (compAff, immat, dateAff),
CONSTRAINT fk_Aff_na_Avion
FOREIGN KEY(immat) REFERENCES
Avion(immat),
CONSTRAINT fk_Aff_comp_Compag FOREIGN KEY(compAff)
REFERENCES Compagnie(comp));
Précédent

- 94/418

Suivant