109 votes

Comment supprimer constraint by name dans PostgreSQL™ ?

Comment puis-je supprimer une contrainte dans PostgreSQL simplement en connaissant le nom ?

J'ai une liste de contraintes qui sont générées automatiquement par un script tiers. Je dois les supprimer sans connaître le nom de la table juste le nom de la contrainte.

18voto

Bob Points 9217

Si votre sur 9.x de PG vous pouvez utiliser l'instruction DO pour exécuter ceci. Il suffit de faire ce qu'a fait a_horse_with_no_name, mais appliquez-le à une instruction DO.

DO $$DECLARE r record;
    BEGIN
        FOR r IN SELECT table_name,constraint_name
                 FROM information_schema.constraint_table_usage
                 WHERE table_name IN ('your_table', 'other_table')
        LOOP
            EXECUTE 'ALTER TABLE ' || quote_ident(r.table_name)|| ' DROP CONSTRAINT '|| quote_ident(r.constraint_name) || ';';
        END LOOP;
    END$$;

16voto

Praveen Kumar C Points 147

Abandonnez la contrainte de clé étrangère droite

ALTER TABLE affiliations
DROP CONSTRAINT affiliations_organization_id_fkey;

REMARQUE :

affiliations -> Table Name

affiliations_organization_id_fkey ->Constraint name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X