Hi,
 
   I am trying to build a user database. The steps for creating a new user are:

1. Use gen_salt to create a salt.
2. Compute the hash based on the salt and password and store both the hash and 
the salt into a new row.


The pl/pgsql would look like this:

CREATE OR REPLACE FUNCTION system.create_enduser(IN emailArg TEXT, IN 
passwordArg TEXT, IN nicknameArg TEXT, IN roundsArg int) RETURNS TEXT AS
$$
#print_strict_params on
DECLARE
    salt TEXT;
    inserted_uuid TEXT;
BEGIN
    salt := public.gen_salt('bf', roundsArg);
    INSERT INTO system.enduser (email, password_hash, password_salt, nickname, 
user_state) VALUES (emailArg, public.crypt(passwordArg, salt), salt, 
nicknameArg, 'REGISTERED') RETURNING uuid into inserted_uuid;
    RETURN inserted_uuid;
END
$$
  LANGUAGE 'plpgsql' VOLATILE
;

Is there a way to do this in a single SQL statement without using a function? 
One way I can think of is using trigger, but that still requires another setup.

Appreciate any help.

-- 
Regards
Ryan

Reply via email to