如何编写一个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;
... 但这不起作用——普通SQL似乎不支持IF
.
我有一个批处理文件,可以创建PostgreSQL 9.1数据库、角色和其他一些东西.它称为psql.exe,传递要运行的SQL脚本的名称.到目前为止,所有这些脚本都是纯SQL,如果可能的话,我希望避免使用PL/pgSQL之类的脚本.