On Tue, 15 Mar 2005 08:39 pm, Andrus wrote:
> >> > I have table containing different types of documents (type A, B and C).
> >> >
> >> > Each document type must have separate sequential ID starting at 1
> >> >
> >> > ID of first inserted record of type A must be set to 1
> >> > ID of first inserted record of type B must be also set to 1
> >> > ID of second record of type A must be set to 2
> >> > etc.
> >>
> > If you are happy with the fact that a sequence may leave a whole in
> > the numbers.  You are probably best to no set a default value for an
> > integer, or big integer.  Then run a before trigger for each row.  That
> > trigger will assign a value to the column based on the value given for
> > the type.
> 
> Russell,
> 
> thank you.
> I'm a new to Postgres.
> Is there any sample how to write such trigger ?
> 

CREATE FUNCTION seq_trig() RETURNS "trigger"
    AS $$BEGIN

IF NEW.type = 'A' THEN
  NEW.sequence = nextval('a');
END IF;

IF NEW.type = 'B' THEN
 NEW.sequence = nextval('b');
END IF;

RETURN NEW;
END$$
    LANGUAGE plpgsql STRICT;


Something like that this may work.

> Before inserting each row it should set document id from sequence
> corresponding to insertable document type.
> 
> Andrus. 
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
> 
> 

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to