Só atualizando a function tf_users_update_code_column..

Incluido o campo *AND NEW.code IS NULL , *para que o usuário possa incluir
o valor que quiser, e caso ele não inclua, a funcao insere os dados
necessário.

- Tinha esquecido dessa parte antes, por isto decidi postar todo o código
aqui novamente, para que fique melhor de entender.


IF NEW.company_id = 1 AND NEW.code IS NULL THEN
>         NEW.code = NEXTVAL('c1_users_code_seq');



CODE:

1 - creating the trigger FUNCTION

CREATE OR REPLACE FUNCTION tf_users_update_code_column()

  RETURNS trigger AS $$

      BEGIN



        IF NEW.company_id = 1 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c1_users_code_seq');

        ELSEIF NEW.company_id = 2 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c2_users_code_seq');

        ELSEIF NEW.company_id = 3 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c3_users_code_seq');

        ELSEIF NEW.company_id = 4 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c4_users_code_seq');

        ELSEIF NEW.company_id = 5 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c5_users_code_seq');

        ELSEIF NEW.company_id = 6 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c6_users_code_seq');

        ELSEIF NEW.company_id = 7 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c7_users_code_seq');

        ELSEIF NEW.company_id = 8 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c8_users_code_seq');

        ELSEIF NEW.company_id = 9 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c9_users_code_seq');

        ELSEIF NEW.company_id = 10 AND NEW.code IS NULL THEN

        NEW.code = NEXTVAL('c10_users_code_seq');



      END IF;



      return NEW;



      END



$$  LANGUAGE plpgsql;

2 - Creating the sequences....

CREATE SEQUENCE c1_users_code_seq

INCREMENT 1

MINVALUE 1

MAXVALUE 9223372036854775807

START 1000;

CACHE 1;

CREATE SEQUENCE c2_users_code_seq

INCREMENT 1

MINVALUE 1

MAXVALUE 9223372036854775807

START 1000;

CACHE 1;

CREATE SEQUENCE c3_users_code_seq

INCREMENT 1

MINVALUE 1

MAXVALUE 9223372036854775807

START 1000;

CACHE 1;

CREATE SEQUENCE c4_users_code_seq

INCREMENT 1

MINVALUE 1

MAXVALUE 9223372036854775807

START 1000;

CACHE 1;


> ... [etc] ...

3 - Creating the TRIGGER

CREATE TRIGGER t_users_update_code_column

  BEFORE INSERT

  ON users

  FOR EACH ROW

  EXECUTE PROCEDURE tf_users_update_code_column();
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a