SELECT client_code_increment INTO STRICT NEW.code FROM public.companies WHERE id =
NEW.id ORDER BY client_code_increment DESC;
I am pretty sure the above line is wrong. NEW.id refers to users.id, not the companies.id. Also, the implementation presents a potential race condition, e.g., if two different sessions attempt an insert almost simultaneously.
I don't think so..
Even because if I change that to company_id, I get the error:
ERROR: column "company_id" does not exist
END IF;
IF (TG_OP = 'INSERT') THEN
UPDATE public.companies SET client_code_increment = (client_code_increment + 1) WHERE
id = NEW.id;
Ditto w.r.t. NEW.id.
Same as above