Comment supprimer une colonne ou un champ dans une table Oracle.
Comment faire un drop column dans une table Oracle.
La clause sql DROP COLUMN de l’instruction sql ALTER TABLE permet de supprimer une colonne existante dans une table Oracle.
Si on supprime une colonne d'une table les index définis sur la colonne sont également supprimés.
Si on supprime une colonne d'une table les contraintes faisant référence à la colonne sont supprimés.
Si la colonne à supprimer est une Primary Key avec des Foreign Key la référençant, Oracle retournera une erreur.
Il faut spécifier la clause CASCADE CONTRAINTES, dans ce cas Oracle supprime toutes les contraintes qui font référence à la colonne.
Oracle invalide automatiquement tous les objets dépendants de la colonne supprimée, tels que les vues, les déclencheurs,...
Vous ne pouvez pas supprimer une colonne :
- d'une table compressée ou une table partitionnée contenant une partition compressée.
- sur laquelle un DOMAIN INDEX a été construit.
ALTER TABLE table_name DROP { COLUMN column | (column [, column ]...)}
[ { CASCADE CONSTRAINTS | INVALIDATE } ];
|
Ici nous essayons de supprimer une colonne PK (Primary Key) qui est référencé dans une FK (Foreign Key).
Cette erreur Oracle est du à la non utilisation de la clause CASCADE CONSTRAINTS.
SQL> ALTER TABLE emp DROP COLUMN empno; ALTER TABLE emp DROP COLUMN empno * ERREUR à la ligne 1 : ORA-12992: impossible de supprimer la colonne clé parent SQL> |
Avec la clause CASCADE CONSTRAINTS la suppression de la colonne est une réussite.
SQL> ALTER TABLE emp DROP COLUMN empno CASCADE CONSTRAINTS; Table modifiée. SQL> |
Pour supprimer plusieurs colonne d'une table dans Oracle, nous utilisons ALTER TABLE DROP sans le mot clé COLUMN.
Les colonnes à supprimer sont placées entre parenthèses juste après le mot clé DROP de la commande ALTER TABLE.
SQL> ALTER TABLE emp DROP (ename,job); Table modifiée. SQL> |
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Modifier un champ de table Oracle ALTER TABLE MODIFY • Ajouter un champ de table Oracle ALTER TABLE ADD • Renommer Colonne avec ALTER TABLE RENAME COLUMN • Créer une table Oracle avec CREATE TABLE |