如何编写一个 SQL 脚本来在 PostgreSQL 9.1中创建一个 ROLE,但是如果它已经存在,则不会引发错误?
目前的剧本只有:
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 等。