Thread: sequence aliases?

sequence aliases?

From
CSN
Date:
I'm checking out Ruby on Rails and there's a tutorial
about using Postgresql views and making them
updateable
(http://wiki.rubyonrails.com/rails/pages/HowtoUsePostgresViewsAsTables).
The tutorial suggests renaming the sequence for the
table to coincide with the view so that Rails can
automatically access the sequence. I don't like this
as it may break other things. Is there a way to create
an alias or something (e.g. quotes_seq_id points to
quotes_table_seq_id), or is there a better way?

Thanks,
CSN




__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com

Re: sequence aliases?

From
Tom Lane
Date:
CSN <cool_screen_name90001@yahoo.com> writes:
> I'm checking out Ruby on Rails and there's a tutorial
> about using Postgresql views and making them
> updateable
> (http://wiki.rubyonrails.com/rails/pages/HowtoUsePostgresViewsAsTables).
> The tutorial suggests renaming the sequence for the
> table to coincide with the view so that Rails can
> automatically access the sequence. I don't like this
> as it may break other things.

Not to mention that it won't actually work --- the proposed approach
fails because PG will refuse to let you drop the original sequence.
(It has failed in every release since 7.3, so I don't put a lot of stock
in that tutorial having been tested much.)  Furthermore, it's quite
likely that future releases won't let you fool with the default
expression of a serial column at all.

My advice to the Rails people would be to fix whatever it is in their
code that is assuming a particular sequence name, or indeed assuming
a sequence at all...

            regards, tom lane

Re: sequence aliases?

From
Greg Stark
Date:
Tom Lane <tgl@sss.pgh.pa.us> writes:

> My advice to the Rails people would be to fix whatever it is in their
> code that is assuming a particular sequence name, or indeed assuming
> a sequence at all...

Well how else do you find the id of the last inserted record without assuming
a sequence?

--
greg

Re: sequence aliases?

From
Martijn van Oosterhout
Date:
On Sun, Nov 06, 2005 at 12:15:45AM -0500, Greg Stark wrote:
>
> Tom Lane <tgl@sss.pgh.pa.us> writes:
>
> > My advice to the Rails people would be to fix whatever it is in their
> > code that is assuming a particular sequence name, or indeed assuming
> > a sequence at all...
>
> Well how else do you find the id of the last inserted record without assuming
> a sequence?

I suppose using something like:

select currval( pg_get_serial_sequence( 'table','col' ) );

That avoids hardcoding the sequence id. Not assuming a sequences at all
may be trickier.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.

Attachment

Re: sequence aliases?

From
CSN
Date:
--- Martijn van Oosterhout <kleptog@svana.org> wrote:

> On Sun, Nov 06, 2005 at 12:15:45AM -0500, Greg Stark
> wrote:
> >
> > Tom Lane <tgl@sss.pgh.pa.us> writes:
> >
> > > My advice to the Rails people would be to fix
> whatever it is in their
> > > code that is assuming a particular sequence
> name, or indeed assuming
> > > a sequence at all...
> >
> > Well how else do you find the id of the last
> inserted record without assuming
> > a sequence?
>
> I suppose using something like:
>
> select currval( pg_get_serial_sequence(
> 'table','col' ) );

I like that better than the current 'table_col_seq'.
Perhaps just currval('table', 'col'). Or perhaps
tables could be made to have a default sequence (one
that's associated with the primary key).

CSN



>
> That avoids hardcoding the sequence id. Not assuming
> a sequences at all
> may be trickier.
>
> Have a nice day,
> --
> Martijn van Oosterhout   <kleptog@svana.org>
> http://svana.org/kleptog/
> > Patent. n. Genius is 5% inspiration and 95%
> perspiration. A patent is a
> > tool for doing 5% of the work and then sitting
> around waiting for someone
> > else to do the other 95% so you can sue them.
>


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com