我正在将数据库从SQL Server移植到Postgresql。我正在寻找SQL Server中user_id()
函数的等效函数,但是从postgresql docs开始,似乎没有等价函数。
current_user
及其别名user
对我没用,因为它们返回名称(文本),我想要的是用户的ID(在SQL Server中返回)。
如何在PG中复制这一重要功能的任何帮助都将非常感激。
答案 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
;