我想将用户ID存储在自定义会话变量中,并在触发过程中使用它(读取)来授权用户操作。我发现了这样的事情:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
似乎可行-我认为应在.conf文件中声明“ myapp.user”,但似乎可以即时创建会话变量(我根本没有更改.conf文件)。
这样做有什么缺点吗?
只要不允许用户运行任意SQL(在这种情况下,他们可以设置其他用户ID),这是一种合理的处理方法。对于PostgreSQL缺少真正的会话变量来说,这是一个棘手的解决方法,但我不知道它有任何重大问题。顺便说一句,请链接到您用作参考的任何相关先前的问题/答案。
—
Craig Ringer
myapp.user
必须postgresql.conf
在9.2或9.1中删除了必须声明的限制