【发布时间】:2015-05-10 23:16:21
【问题描述】:
我在 Postgres 中编写了以下函数,但我遇到了一个问题:它总是返回一个 Row。我的意思是,当没有用户匹配该对时,它会返回所有列为空的行。
有没有办法让函数在没有结果时返回 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;
有趣:
如果我将返回类型从“用户”更改为
TABLE("Email" text,"GivenName" text,"ID" int8, "Password" text,"Salt" text)
它按预期工作。 但我真的想使用对“用户”的“引用”,因为维护会更容易。
谢谢!
【问题讨论】:
标签: postgresql