下面的函数好吗?
CREATE FUNCTION password_set(bigint, char) RETURNS boolean AS $$
UPDATE users SET password = $2 WHERE id = $1 RETURNING TRUE;
$$ LANGUAGE SQL;
当 UPDATE
设置了 password
时,它会返回 TRUE
,但是当 UPDATE
没有设置 password
时,它会返回 NULL
(而不是 FALSE
)。
我认为这对大多数情况都可以使用,但您认为这样可以吗?
如果不行,您会如何更改函数以在 UPDATE
没有设置 password
时返回 FALSE
(而不是 NULL
)?
id
是唯一的还是可能有多个受影响的行?另外,您使用的Postgres版本是什么? - Erwin Brandstetter