🧚 Écoute ! Beekeeper Studio est une interface de base de données rapide, moderne et open source Télécharger
6 juillet 2024 Par Matthew Rathbone

Pour supprimer une contrainte dans PostgreSQL, utilise la commande ALTER TABLE suivie de
la clause DROP CONSTRAINT, en indiquant le nom de la contrainte à
supprimer. Attention, cela peut entraîner des problèmes d’intégrité des données.

Syntaxe de base:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

Types de contraintes dans PostgreSQL

Avant d’apprendre à supprimer des contraintes, il est utile de connaître les types de contraintes courants :

  • Clé primaire
  • Clé étrangère
  • Unique
  • Check

Supprimer une contrainte de clé primaire

Une clé primaire identifie de manière unique chaque enregistrement d’un tableau.

Exemple:

Imaginons qu’on ait un tableau users :

CREATE TABLE users (
    user_id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL
);

Pour supprimer la contrainte de clé primaire :

ALTER TABLE users
DROP CONSTRAINT users_pkey;

Résultat attendu:

ALTER TABLE

Ici, users_pkey est le nom de la contrainte à supprimer. Tu peux trouver le nom de la contrainte avec la commande \d dans le terminal psql, suivie du nom du tableau dont tu veux voir les contraintes, ou dans l’onglet Indexes de Beekeeper Studio, qui affiche les détails du tableau, y compris le nom des contraintes.

Supprimer une contrainte de clé étrangère

Les clés étrangères garantissent l’intégrité référentielle entre deux tableaux. Voici comment supprimer une contrainte de clé étrangère.

Exemple:

Prenons deux tableaux, orders et customers :

CREATE TABLE customers (
    customer_id serial PRIMARY KEY,
    customer_name VARCHAR (100) NOT NULL
);

CREATE TABLE orders (
    order_id serial PRIMARY KEY,
    order_date DATE NOT NULL,
    customer_id INT,
    CONSTRAINT fk_customer
        FOREIGN KEY(customer_id) 
        REFERENCES customers(customer_id)
);

Pour supprimer la contrainte de clé étrangère fk_customer :

ALTER TABLE orders
DROP CONSTRAINT fk_customer;

Résultat attendu:

ALTER TABLE

Pour en savoir plus, consulte Comment supprimer une contrainte de clé étrangère.

Supprimer une contrainte d’unicité

Les contraintes d’unicité garantissent que toutes les valeurs d’une colonne sont différentes. Supprimer une contrainte d’unicité se fait comme pour les autres contraintes.

Exemple:

Avec le tableau users :

CREATE TABLE users (
    user_id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL
);

Pour supprimer la contrainte d’unicité sur la colonne username :

ALTER TABLE users
DROP CONSTRAINT users_username_key;

Résultat attendu:

ALTER TABLE

Voir Créer des contraintes d’unicité dans PostgreSQL

Supprimer une contrainte Check

Les contraintes Check garantissent l’intégrité de domaine en limitant les valeurs autorisées dans une colonne.

Exemple:

Supposons qu’on ait un tableau products :

CREATE TABLE products (
    product_id serial PRIMARY KEY,
    price DECIMAL (10, 2) NOT NULL,
    CONSTRAINT price_check CHECK (price > 0)
);

Pour supprimer la contrainte Check price_check :

ALTER TABLE products
DROP CONSTRAINT price_check;

Résultat attendu:

ALTER TABLE

Les données ne sont pas modifiées

À noter : quand tu supprimes une contrainte, les données du tableau ne sont pas modifiées. La contrainte est simplement retirée, et tu pourras insérer ou mettre à jour des données dans le tableau sans devoir respecter les contraintes qui étaient en place.

Supprimer des contraintes peut causer des problèmes d’intégrité

Sois prudent quand tu supprimes des contraintes : cela peut entraîner des problèmes d’intégrité des données si elles avaient une raison d’être. Par exemple, si tu supprimes une contrainte de clé primaire, tu risques de te retrouver avec plusieurs lignes ayant les mêmes valeurs dans la colonne de clé primaire, ce qui peut poser problème quand tu interroges ou mets à jour les données du tableau.

C’est pourquoi il vaut toujours mieux examiner attentivement tes données et les contraintes en place avant de supprimer une contrainte de ta base de données. Pense aussi à l’impact possible sur les applications ou processus qui dépendent des données du tableau avant de lancer la suppression.

Conclusion

Pour supprimer des contraintes dans PostgreSQL, on utilise la commande ALTER TABLE suivie de DROP CONSTRAINT. Chaque type de contrainte (clé primaire, clé étrangère, unicité et Check) peut être supprimé en indiquant son nom. Fais attention, car cela peut entraîner des problèmes d’intégrité des données si la contrainte avait une bonne raison d’exister. Bien savoir gérer les contraintes te permet de maintenir et de faire évoluer le schéma de ta base de données au fil du temps.

Beekeeper Studio est une interface de base de données gratuite & open source

Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs disent de Beekeeper Studio

★★★★★
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
— Alex K., développeur de bases de données
★★★★★
« J’ai essayé beaucoup d’interfaces de bases de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »
— Sarah M., ingénieure Full Stack