> > > 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral