Thread: SERIAL vs. OIDs

SERIAL vs. OIDs

From
Jay Bloodworth
Date:
Seeking informed opinion on what is better to use as a unique row id for
linking tables together in a normalized database, a SERIAL field or the
pgsql OID.  This is for an intranet application with a small user base,
but I'd like to make it robust and scalable where it is easy to do so.
My conclusions so far:

OIDs:

Pros:
    * They're already there; save a couple bytes per row
    * Specific method to retrieve after INSERT (maybe faster than SELECT
on the sequence)

Cons:
    * Not serial by table; hard to build linked table 'by hand'
    * not pure SQL

SERIAL:

Pros:
    * Based on fairly vanilla SQL
    * Easier to reproduce all or part of a db on a dump/restore

Cons:
    * Performance?
    * Extra id field redundant

I'm sure I'm missing something, and I'm not entirely sure how to weight
the points I've got.  Advice appreciated.

Please CC me.  I subscribed to the digest.

Jay



Re: SERIAL vs. OIDs

From
Alke
Date:
OIDs Cons:
       * The code executend in triggers (written in plpgsql) can't know the OID
of the inserted/updated/deleted row.

This problem make me pass from OIDs to SERIALs, 'cause I need to know an
identifier of the row in order to make referential integrity...and I wasn't able
to obtain that with OIDs.
If someone know a work-around to this problem, please let me know...

                                                                Paolo Salvn


> Date: Sun, 29 Aug 1999 22:52:11 +0000
> From: Jay Bloodworth <jay@dokodiner.com>
> Subject: SERIAL vs. OIDs
>
> Seeking informed opinion on what is better to use as a unique row id for
> linking tables together in a normalized database, a SERIAL field or the
> pgsql OID.  This is for an intranet application with a small user base,
> but I'd like to make it robust and scalable where it is easy to do so.
> My conclusions so far:
>
> OIDs:
>
> Pros:
>     * They're already there; save a couple bytes per row
>     * Specific method to retrieve after INSERT (maybe faster than SELECT
> on the sequence)
>
> Cons:
>     * Not serial by table; hard to build linked table 'by hand'
>     * not pure SQL
>
> SERIAL:
>
> Pros:
>     * Based on fairly vanilla SQL
>     * Easier to reproduce all or part of a db on a dump/restore
>
> Cons:
>     * Performance?
>     * Extra id field redundant
>
> I'm sure I'm missing something, and I'm not entirely sure how to weight
> the points I've got.  Advice appreciated.
>
> Please CC me.  I subscribed to the digest.
>
> Jay