Как мне написать сценарий 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 и т.п.