>
>
>
> I agree that having thousands of sequences can be hard to manage,
> especially in a function, but you did not state that fact before,
> only that you wanted separate sequences for each company. That
> being said, here is an alternate solution.
>

Yep.. that was my mistake.


>
> 1. CREATE TABLE company_seqs
>    (company_id bigint NOT NULL,
>     last_seq   bigint NOT NULL,
>     CONSTRAINT company_seqs_pk PRIMARY KEY (company_id)
>    );
>
> 2. Every time you create a new company, you must insert the
>    corresponding company_id  and last_seq [which will be 1}
> into the company_seqs table.
>

ok that's right.. just a comment here...
the value inside the users.code column must start with 1000 and not 1.
So, it would be 1001, 1002, 1003, etc.

The field "last_seq + 1" is ok, but how can I determine that the start
point would be 1000?


>
> 3. Change the trigger function logic to something like below:
>
> DECLARE
>    v_seq_num INTEGER;
>
>  BEGIN
>    SELECT last_seq
>    FROM company_seqs
>    WHERE company_id = NEW.company_id INTO v_seq_num;
>    UPDATE company_seqs
>       SET last_seq  = last_seq + 1
>     WHERE company_id = NEW.company_id;
>
>    new.users_code = v_seq_num;
>

not sure what v_seq_num is...


>
>
> Now, just a quick comment. As has been said before, wanting a sequence
> with no gaps for
> each user in each company is a bit unrealistic and serves no purpose. For
> example,
> company_id 3 has 10 users, 1 > 10. What do you do when user 3 leaves and
> is deleted?
> As long as you have a unique user_code for each user, it does not matter.
>
> >... Studying.. asking for some help to get a better understand.... isn't
> this the purpose of this mail list?
>
> Yes, but at the same time, it is evident that you are trying to design the
> database before you have
> a valid understanding of database design. To wit, you are putting the cart
> before the horse.
> While this list is here to help you, it is not meant as a DATABASE 101
> course.
>

Yep.. got it

Reply via email to