Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Um eine Rolle zu löschen, wird der Befehl DROP ROLE verwendet. (Alternativ gibt es auch den Befehl DROP USER, der das Gleiche macht.) Im einfachsten Fall geht das so:
DROP ROLE peter;
Wie bei den meisten DROP-Befehlen gibt es auch hier die optionale Klausel IF EXISTS, die die Fehlermeldung unterbindet, wenn es die zu löschende Rolle nicht gibt:
DROP ROLE IF EXISTS bernd;
Mehrere Rollen können auf einmal gelöscht werden:
DROP ROLE peter, bernd, christoph;
Das geht natürlich auch mit einzelnen Befehlen in einem Transaktionsblock.
Um eine Rolle zu löschen, muss der ausführende Benutzer das Attribut CREATEROLE haben. Superuser können nur von Superusern gelöscht werden. Der aktuelle Benutzer kann nicht gelöscht werden. Dazu kommt, dass man den von initdb im Datenbanksystem angelegten Benutzer, üblicherweise postgres, nicht löschen kann, weil er der Eigentümer der Systemkataloge ist. Es bleibt also immer ein Benutzer im System übrig.