我基本上试图从以下函数返回更新的id。以下是我的代码的简化版本:
CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer AS $$
BEGIN
return (UPDATE users SET isConfirmed = true where _token = token RETURNING id));
END;
$$ LANGUAGE plpgsql;
这有什么问题?
答案 0 :(得分:2)
我认为你不能像这样返回价值。您需要将其存储到变量中,然后返回该变量:
CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer
AS
$$
declare
_id integer;
BEGIN
UPDATE users SET isConfirmed = true where _token = token
RETURNING id
into _id;
return _id;
END;
$$
LANGUAGE plpgsql;
但是你不需要PL / pgSQL函数。一个普通的SQL函数也可以这样做:
CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer
AS
$$
UPDATE users SET isConfirmed = true where _token = token
RETURNING id
$$ LANGUAGE sql;
但你必须确保token
是唯一的,否则会失败。