PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Suppression de COMMENT ON de tous les objets dans PostgreSQL

J'ai rencontré un problème très similaire il y a quelque temps et j'ai trouvé une solution très simple :supprimer de la table du catalogue système pg_description directement . Les commentaires sont simplement "attachés" aux objets et n'interfèrent pas autrement.

DELETE FROM pg_description WHERE description = 'something special';

Avis de non-responsabilité :
Manipuler directement les tables du catalogue est dangereux et une mesure de dernier recours. Vous devez savoir ce que vous faites et vous le faites à vos risques et périls ! Si vous échouez, vous risquez d'endommager votre base de données (cluster).

J'ai posé des questions sur l'idée sur la liste pgsql-admin et j'ai reçu un réponse encourageante de Tom Lane :

> DELETE FROM pg_description WHERE description = 'My very special
> totally useless comment.';

> AFAICS, there are no side-effects. Are there any?

It's safe enough, as long as you don't delete the wrong comments.
There's no hidden infrastructure for a comment.

            regards, tom lane

Vous devez vous assurer qu'il n'y a pas de commentaires que vous préféreriez conserver.Inspectez d'abord ce que vous allez supprimer. Sachez que de nombreux objets Postgres intégrés ont également des commentaires.

Par exemple, pour uniquement supprimer tous les commentaires sur les colonnes du tableau , vous pouvez utiliser :

SELECT *
-- DELETE
FROM   pg_description
WHERE  objsubid > 0;

Le manuel informe sur la colonne objsubid :