Créer PostgreSQL RÔLE utilisateur (nom d'utilisateur) si elle n'existe pas

Comment puis-je écrire un script SQL pour créer un RÔLE dans PostgreSQL 9.1, mais sans lever une erreur si elle existe déjà?

Le script courant, tout simplement:

CREATE ROLE my_user LOGIN PASSWORD 'my_password';

Cela échoue si l'utilisateur existe déjà. J'aimerais quelque chose comme:

IF NOT EXISTS (SELECT * FROM pg_user WHERE username = 'my_user')
BEGIN
    CREATE ROLE my_user LOGIN PASSWORD 'my_password';
END;

... mais qui ne fonctionne pas - IF ne semble pas être pris en charge dans la plaine SQL.

J'ai un fichier de commandes qui crée une base de données PostgreSQL 9.1, le rôle et quelques autres choses. Il appelle psql.exe en passant le nom d'un script SQL à exécuter. Jusqu'à présent, tous ces scripts sont plaine SQL et j'aimerais éviter de PL/pgSQL et, si possible.

InformationsquelleAutor EMP | 2011-11-11