SQL Server';s user_id()函数在Postgresql中是否等效?

SQL Server';s user_id()函数在Postgresql中是否等效?,postgresql,Postgresql,我正在将一个数据库从SQLServer移植到Postgresql。我正在为SQL Server中的user\u id()函数寻找等效函数,但从中可以看出,似乎没有等效函数 current_user及其别名user对我没有用处,因为它们返回名称(文本),而我想要的是用户的id(在SQL Server中返回) 任何关于如何在PG中复制这一重要功能的帮助都将不胜感激。用户ID存储在PG_用户表中。使用当前用户,您可以选择用户ID。您可以编写一个过程来总结这一点,我可以想象这与user_id()函数在幕

我正在将一个数据库从SQLServer移植到Postgresql。我正在为SQL Server中的
user\u id()
函数寻找等效函数,但从中可以看出,似乎没有等效函数

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


任何关于如何在PG中复制这一重要功能的帮助都将不胜感激。

用户ID存储在PG_用户表中。使用当前用户,您可以选择用户ID。您可以编写一个过程来总结这一点,我可以想象这与user_id()函数在幕后所做的差不多,但我不知道已经有现成的函数为您提供了它:

select usesysid from pg_user where usename = CURRENT_USER;

以下是关于pg_用户表的文档:

用户ID存储在pg_用户表中。使用当前用户,您可以选择用户ID。您可以编写一个过程来总结这一点,我可以想象这与user_id()函数在幕后所做的差不多,但我不知道已经有现成的函数为您提供了它:

select usesysid from pg_user where usename = CURRENT_USER;

这里是关于pg_用户表的文档:

我不认为有一种内置的方法可以获得它,但您肯定可以创建一个函数:

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

我不认为有一个内置的方法来获得它,但您肯定可以创建一个函数:

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

Postgres对用户id的含义没有概念。为什么不能使用文本用户名?另外,看起来
user_id()
已被弃用,但引用完整性并不要求某个内容是整数,只要求它始终引用其他唯一键。文本用户名与数字ID一样是表示“同一用户”的有效密钥,在某些情况下可能是更好的选择,例如,在将数据恢复到可能以不同顺序创建用户的不同群集时。(你的语气有点讽刺意味,不确定你是否有意,但如果是,请克制。)Postgres不知道用户id是什么意思。为什么不能使用文本用户名?另外,看起来
user_id()
已被弃用,但引用完整性并不要求某个内容是整数,只要求它始终引用其他唯一键。文本用户名与数字ID一样是表示“同一用户”的有效密钥,在某些情况下可能是更好的选择,例如,在将数据恢复到可能以不同顺序创建用户的不同群集时。(你的语气有点讽刺意味,不确定你是否有意,但如果是,请克制。)我得出了相同的结论——我想我会用一个函数来概括它。我只是得出了相同的结论——我想我会用一个函数来概括它。