Ho affrontato un problema molto simile qualche tempo fa e ho trovato una soluzione molto semplice:eliminare dalla tabella del catalogo di sistema pg_description
direttamente . I commenti sono semplicemente "attaccati" agli oggetti e non interferiscono in altro modo.
DELETE FROM pg_description WHERE description = 'something special';
Dichiarazione di non responsabilità:
La manipolazione diretta delle tabelle di catalogo è pericolosa e una misura di ultima istanza. Devi sapere cosa stai facendo e lo stai facendo a tuo rischio! Se sbagli, potresti rovinare il tuo database (cluster).
Ho chiesto dell'idea nell'elenco di pgsql-admin e ho ricevuto un risposta incoraggiante di 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
Dovresti assicurarti che non ci siano commenti che vorresti conservare. Controlla prima cosa cancellerai. Tieni presente che anche molti oggetti Postgres integrati hanno commenti.
Ad esempio, per eliminare solo tutti i commenti sulle colonne della tabella , potresti usare:
SELECT *
-- DELETE
FROM pg_description
WHERE objsubid > 0;
Il manuale informa sulla colonna objsubid
: