Réduction des contraintes

Les contraintes sont supprimées à l’aide de la commande ALTER TABLE :

  • ALTER TABLE … DROP CONSTRAINT … supprime explicitement la contrainte spécifiée. Comme pour la modification des contraintes, la contrainte peut être identifiée par le nom de la contrainte ou la définition de colonne, ainsi que par le type de contrainte. Pour une clé primaire, elles peuvent également être identifiées par le mot-clé PRIMARY KEY.

  • ALTER TABLE … DROP COLUMN … détruit une colonne et ses contraintes associées.

Par défaut, lorsqu’une clé primaire/unique est détruite, toutes les clés étrangères faisant référence à la clé détruite sont également détruites, sauf si l’option de destruction RESTRICT est spécifiée.

Les contraintes sont également détruites lorsque les tables/schémas/bases de données associées sont détruites. Les commandes DROP prennent en charge les options de destruction CASCADE | RESTRICT.

Note

Les tables, schémas et bases de données détruites peuvent être restaurés à l’aide de la commande UNDROP ; les colonnes et contraintes détruites ne peuvent être restaurées.

Dans ce chapitre :

Réduction des contraintes

Les contraintes clés uniques/primaires/étrangères peuvent être explicitement détruites (en utilisant ALTER TABLE … DROP CONSTRAINT …):

ALTER TABLE <table_name> DROP { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column>, [ ... ] ) } [ CASCADE | RESTRICT ]

Pour ces contraintes, lors de la destruction d’une contrainte de clé étrangère ou d’une contrainte de clé primaire/unique sans référence de clé étrangère, les contraintes sont détruites directement.

L’option par défaut est CASCADE, ce qui signifie que la destruction d’une clé unique/primaire avec des références de clés étrangères entraîne la destruction de toutes les clés étrangères de référence ainsi que de la clé unique/primaire.

  • Si l’option de destruction RESTRICT est spécifiée, lors de la destruction d’une clé primaire/unique, une erreur est renvoyée s’il existe des clés étrangères qui font référence aux clés détruites.

Destruction de colonnes

La destruction de colonnes à l’aide de ALTER TABLE … DROP COLUMN … se comporte de la même manière que la destruction des contraintes :

ALTER TABLE <table_name> DROP COLUMN <name> [ CASCADE | RESTRICT ]

L’option par défaut est CASCADE, ce qui signifie que toute contrainte qui contient la colonne à détruire est également détruite. Si une clé primaire/unique impliquant la colonne est référencée par d’autres contraintes de clé étrangère, toutes les clés étrangères de référence sont détruites.

  • Si l’option RESTRICT est spécifiée, une erreur est renvoyée si la colonne contient des clés primaires/uniques avec des références de clés étrangères. La commande de destruction ne réussit que s’il n’y a pas de contraintes définies sur ou se référant à la colonne en cours de destruction.

Destruction de tables/schémas/bases de données

La commande DROP détruit la table, le schéma ou la base de données spécifiés et peut également être spécifiée pour détruire toutes les contraintes associées à l’objet :

DROP { TABLE | SCHEMA | DATABASE } <name> [ CASCADE | RESTRICT ]

Comme pour la destruction de colonnes et de contraintes, CASCADE est l’option de destruction par défaut, et toutes les contraintes qui appartiennent ou font référence à l’objet à détruire seront également détruites.

Par exemple, lors de la destruction d’une base de données, si la base de données contient une clé primaire/unique référencée par une clé étrangère d’une autre base de données, les clés étrangères de référence sont également détruites.

Si l’objet est par la suite restauré, toutes les contraintes pertinentes précédemment détruites seront restaurées.

Si l’option RESTRICT est spécifiée, une erreur est renvoyée si des contraintes primaires/uniques sous l’objet ont des références de clés étrangères.