>
>
> 1 - Criando a funcao
>
> CREATE OR REPLACE FUNCTION tf_users_update_code_column()
> RETURNS trigger AS $$
>
> BEGIN
>
> IF NEW.company_id = 1 THEN
> NEW.code = NEXTVAL('c1_users_code_seq');
>
> ELSEIF NEW.company_id = 2 THEN
> NEW.code = NEXTVAL('c2_users_code_seq');
>
> ELSEIF NEW.company_id = 3 THEN
> NEW.code = NEXTVAL('c3_users_code_seq');
>
> ELSEIF NEW.company_id = 4 THEN
> NEW.code = NEXTVAL('c4_users_code_seq');
>
> ELSEIF NEW.company_id = 5 THEN
> NEW.code = NEXTVAL('c5_users_code_seq');
>
> ELSEIF NEW.company_id = 6 THEN
> NEW.code = NEXTVAL('c6_users_code_seq');
>
> ELSEIF NEW.company_id = 7 THEN
> NEW.code = NEXTVAL('c7_users_code_seq');
>
> ELSEIF NEW.company_id = 8 THEN
> NEW.code = NEXTVAL('c8_users_code_seq');
>
> ELSEIF NEW.company_id = 9 THEN
> NEW.code = NEXTVAL('c9_users_code_seq');
>
> ELSEIF NEW.company_id = 10 THEN
> NEW.code = NEXTVAL('c10_users_code_seq');
>
> END IF;
>
> return NEW;
>
> END
> $$ LANGUAGE plpgsql;
>
> 2 - Criando as seq
>
> 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 - Criando o TRIGGER
>
> CREATE TRIGGER t_users_update_code_column
> BEFORE UPDATE OR INSERT
> ON users
> FOR EACH ROW
> EXECUTE PROCEDURE tf_users_update_code_column();
>
>
>
>
> Isso funciona bem. Sem nenhum problema.
>
> O único problema é que eu teria milhares de seq para criar, pois haverá
> milhares de clientes.
> Isto é simplesmente inviável.
>
> - Por favor, baseado no que forneci a cima, poderiam dar alguma luz sobre
> como fazer o mesmo, mas mais "simples"? Talvez utilizar uma outra tabela
> para armazenar os dados, como já mencionado.
>
> Obrigado.
> Lucas
>
>
Ops... acabei de ver um erro meu:
- Antes de INSERT e não de UPDATE/INSERT
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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral