SQL Server的user_id()函数在Postgresql中等效吗?

时间:2013-11-06 23:08:09

标签: postgresql

我正在将数据库从SQL Server移植到Postgresql。我正在寻找SQL Server中user_id()函数的等效函数,但是从postgresql docs开始,似乎没有等价函数。

current_user及其别名user对我没用,因为它们返回名称(文本),我想要的是用户的ID(在SQL Server中返回)。

如何在PG中复制这一重要功能的任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:2)

userid存储在pg_user表中。使用current_user,您可以选择userid。你可以编写一个程序来为你包装它,我想这就是user_id()函数在幕后做的事情,但我不知道提供的开箱即用的功能它已经为你了:

select usesysid from pg_user where usename = CURRENT_USER;

以下是pg_user表的文档:http://www.postgresql.org/docs/current/static/view-pg-user.html

答案 1 :(得分:2)

我认为没有内置的方式来获得它,但你当然可以发挥作用:

CREATE OR REPLACE FUNCTION user_id() RETURNS INT AS $$
    SELECT usesysid::int 
    FROM pg_user
    WHERE usename = CURRENT_USER
$$
    LANGUAGE SQL
;