Создать РОЛЬ PostgreSQL (пользователя), если она не существует

Как мне написать сценарий SQL для создания РОЛИ в PostgreSQL 9.1, но без появления ошибки, если она уже существует?

Текущий сценарий просто имеет:

CREATE ROLE my_user LOGIN PASSWORD 'my_password';

Это не удается, если пользователь уже существует . Я бы хотел что-то вроде:

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

... но это не работает - IF , похоже, не поддерживается в простом SQL.

У меня есть командный файл, который создает базу данных PostgreSQL 9.1, роль и некоторые другие вещи. Он вызывает psql.exe, передавая имя запускаемого сценария SQL. Пока что все эти сценарии представляют собой простой SQL, и я бы по возможности избегал PL / pgSQL и т.п.

94
задан Erwin Brandstetter 10 April 2013 в 00:19
поделиться