相关疑难解决方法(0)

Postgres 函数总是返回一行

我在 Postgres 中编写了以下函数,但我遇到了一个问题:它总是返回一行。我的意思是,当没有用户匹配该对时,它会返回一行所有列都为空的行。

有没有办法让函数在没有结果时返回 0(零)行?

CREATE OR REPLACE FUNCTION find_user_by_credentials(email text, password text)
RETURNS
"User"
AS
$$
    SELECT *
        FROM "User" AS "U"
    WHERE email = "U"."Email" AND "U"."Password" = md5(password || "U"."Salt")
    ;
$$
LANGUAGE SQL IMMUTABLE STRICT;
Run Code Online (Sandbox Code Playgroud)

有趣:如果我将返回类型从“用户”更改为 TABLE("Email" text,"GivenName" text,"ID" int8, "Password" text,"Salt" text)

它按预期工作。但我真的想对“用户”使用“引用”,因为维护会更容易。

谢谢!

postgresql

3
推荐指数
1
解决办法
1264
查看次数

标签 统计

postgresql ×1