Před časem jsem čelil velmi podobnému problému a přišel jsem s velmi jednoduchým řešením:odstranit z tabulky systémového katalogu pg_description
přímo . Komentáře jsou pouze "připojeny" k objektům a jinak nezasahují.
DELETE FROM pg_description WHERE description = 'something special';
Prohlášení:
Přímá manipulace s katalogovými tabulkami je nebezpečná a opatření poslední instance. Musíte vědět, co děláte a děláte to na vlastní nebezpečí! Pokud to pokazíte, můžete pokazit svou databázi (shluk).
Zeptal jsem se na tento nápad na seznamu pgsql-admin a dostal jsem povzbudivá odpověď od Toma Lanea :
> 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
Měli byste se ujistit, že zde nejsou žádné komentáře, které byste si raději ponechali. Nejprve si zkontrolujte, co se chystáte smazat. Uvědomte si, že mnoho vestavěných objektů Postgres má také komentáře.
Chcete-li například pouze smazat všechny komentáře ve sloupcích tabulky , můžete použít:
SELECT *
-- DELETE
FROM pg_description
WHERE objsubid > 0;
Manuál informuje o sloupci objsubid
: