-- set generic with date and uid combined -- don't use with set_generic/set_uid together CREATE OR REPLACE FUNCTION set_generic() RETURNS TRIGGER AS $$ DECLARE random_length INT = 32; -- long for massive data BEGIN IF TG_OP = 'INSERT' THEN NEW.date_created := 'now'; IF NEW.uid IS NULL THEN NEW.uid := random_string(random_length); END IF; ELSIF TG_OP = 'UPDATE' THEN NEW.date_updated := 'now'; END IF; RETURN NEW; END; $$ LANGUAGE 'plpgsql';