pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
Alternative Serial
5+ messages / 3 participants
[nested] [flat]

* Alternative Serial
@ 2007-03-11 14:20  Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
  0 siblings, 2 replies; 5+ messages in thread

From: Ezequias Rodrigues da Rocha @ 2007-03-11 14:20 UTC (permalink / raw)
  To: pgsql-sql; Pgadmin-Support <pgadmin-support@postgresql.org>

Hi list,

I know that serials must be created like this.

Create the Serial

Create a field table and reffers to the pre-created serial.

Now I noticed that it is possible to use the default value. I am almost
quite sure that this is an alternative way and non polite.

I would like to know if I am correct and what does it means:

nextval('mySerial_id'::regclass)

What is regclass ?

Regards ,
-- 
Ezequias Rodrigues da Rocha
http://ezequiasrocha.blogspot.com/
use Mozilla Firefox:http://br.mozdev.org/firefox/

^ permalink  raw  reply  [nested|flat] 5+ messages in thread

* Re: Alternative Serial
@ 2007-03-11 14:47  Milen A. Radev <milen@radev.net>
  parent: Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
  1 sibling, 1 reply; 5+ messages in thread

From: Milen A. Radev @ 2007-03-11 14:47 UTC (permalink / raw)
  To: pgadmin-support@postgresql.org; +Cc: pgsql-sql

Ezequias Rodrigues da Rocha написа:
> Hi list,
> 
> I know that serials must be created like this.

Actually no.

> Create the Serial

There is no db object 'Serial' you could create independently - you
probably mean 'sequence'.

> 
> Create a field table and reffers to the pre-created serial.

You could and should create a field of (pseudo-)type 'serial' and be
done with it.

> 
> Now I noticed that it is possible to use the default value. I am almost
> quite sure that this is an alternative way and non polite.


The old and still working way to create a field that would function as
surrogate key is to create a sequence, create a field in the table, mark
it integer and set its default value to be the 'nextval' of the created
sequence. That was too much typing for some (I'm included) and later a
syntax sugar was added - the pseudo-type 'serial'.

So the following syntax:

CREATE TABLE example (
   example_sid SERIAL NOT NULL PRIMARY KEY,
   ...
)

is equivalen to:


CREATE SEQUENCE example_example_sid_seq;

CREATE TABLE example (
   example_sid INTEGER PRIMARY KEY DEFAULT
NEXVAL)('example_example_sid_seq'),
   ...
)


As you could see - very convenient for the 99.9% of the cases.

> 
> I would like to know if I am correct and what does it means:
> 
> nextval('mySerial_id'::regclass)
> 
> What is regclass ?

Read here about 'regclass' (there is a note about it) -
http://www.postgresql.org/docs/8.2/static/functions-sequence.html, but
that should not be important to you.


-- 
Milen A. Radev




^ permalink  raw  reply  [nested|flat] 5+ messages in thread

* Re: Alternative Serial
@ 2007-03-11 15:08  Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
  parent: Milen A. Radev <milen@radev.net>
  0 siblings, 1 reply; 5+ messages in thread

From: Ezequias Rodrigues da Rocha @ 2007-03-11 15:08 UTC (permalink / raw)
  To: Milen A. Radev <milen@radev.net>; +Cc: pgadmin-support@postgresql.org; pgsql-sql

Yes you are right, I means sequences.

The second way is better for me that have Id (PK) fields not  defined  as
Sequences. Now it is much more difficult to change the  type of my PK than
define a Default value. I am just concerned about the consistency of this
sequence. Could you make me more easy ?

And about the cast I have found ?

nextval('mySerial_id'::regclass)

I ask again. What is regclass ? What does it really is.

Ezequias

2007/3/11, Milen A. Radev <milen@radev.net>:
>
> Ezequias Rodrigues da Rocha написа:
> > Hi list,
> >
> > I know that serials must be created like this.
>
> Actually no.
>
> > Create the Serial
>
> There is no db object 'Serial' you could create independently - you
> probably mean 'sequence'.
>
> >
> > Create a field table and reffers to the pre-created serial.
>
> You could and should create a field of (pseudo-)type 'serial' and be
> done with it.
>
> >
> > Now I noticed that it is possible to use the default value. I am almost
> > quite sure that this is an alternative way and non polite.
>
>
> The old and still working way to create a field that would function as
> surrogate key is to create a sequence, create a field in the table, mark
> it integer and set its default value to be the 'nextval' of the created
> sequence. That was too much typing for some (I'm included) and later a
> syntax sugar was added - the pseudo-type 'serial'.
>
> So the following syntax:
>
> CREATE TABLE example (
>    example_sid SERIAL NOT NULL PRIMARY KEY,
>    ...
> )
>
> is equivalen to:
>
>
> CREATE SEQUENCE example_example_sid_seq;
>
> CREATE TABLE example (
>    example_sid INTEGER PRIMARY KEY DEFAULT
> NEXVAL)('example_example_sid_seq'),
>    ...
> )
>
>
> As you could see - very convenient for the 99.9% of the cases.
>
> >
> > I would like to know if I am correct and what does it means:
> >
> > nextval('mySerial_id'::regclass)
> >
> > What is regclass ?
>
> Read here about 'regclass' (there is a note about it) -
> http://www.postgresql.org/docs/8.2/static/functions-sequence.html, but
> that should not be important to you.
>
>
> --
> Milen A. Radev
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>                http://archives.postgresql.org
>



-- 
Ezequias Rodrigues da Rocha
http://ezequiasrocha.blogspot.com/
use Mozilla Firefox:http://br.mozdev.org/firefox/


^ permalink  raw  reply  [nested|flat] 5+ messages in thread

* Re: Alternative Serial
@ 2007-03-11 16:53  A. Kretschmer <andreas.kretschmer@schollglas.com>
  parent: Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
  1 sibling, 0 replies; 5+ messages in thread

From: A. Kretschmer @ 2007-03-11 16:53 UTC (permalink / raw)
  To: pgsql-sql

am  Sun, dem 11.03.2007, um 11:20:33 -0300 mailte Ezequias Rodrigues da Rocha folgendes:
> nextval('mySerial_id'::regclass)
> 
> What is regclass ?

An Object Identifier for relation names.

See http://www.postgresql.org/docs/8.1/interactive/datatype-oid.html


Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net



^ permalink  raw  reply  [nested|flat] 5+ messages in thread

* Re: Alternative Serial
@ 2007-03-11 16:54  Milen A. Radev <milen@radev.net>
  parent: Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
  0 siblings, 0 replies; 5+ messages in thread

From: Milen A. Radev @ 2007-03-11 16:54 UTC (permalink / raw)
  To: pgadmin-support@postgresql.org; +Cc: pgsql-sql

Ezequias Rodrigues da Rocha написа:
> Yes you are right, I means sequences.
> 

Please re-read my reply!

> The second way is better for me that have Id (PK) fields not  defined  as
> Sequences. Now it is much more difficult to change the  type of my PK than

A field could not be defined as 'sequence', but as 'serial', because
'sequence' is a db object and 'serial' is a (pseudo-)type. The actual
type of a field defined as 'serial' is 'integer' (or 'bigint' in case of
'bigserial'). You could change the type of a field (defined as sequence
earlier) as easy as you could any other field. Or you could just change
its default value. Or anything else.

> define a Default value. I am just concerned about the consistency of this
> sequence. Could you make me more easy ?

What do you mean by 'consistency' here? Guaranteed uniqueness of the
numbers generated by the sequence? Pleas read the fine documentation
here - http://www.postgresql.org/docs/8.2/static/sql-createsequence.html.


> 
> And about the cast I have found ?
> 
> nextval('mySerial_id'::regclass)
> 
> I ask again. What is regclass ? What does it really is.

I already answered that one, please re-read my reply and the pages it
mentions.

[...]



-- 
Milen A. Radev




^ permalink  raw  reply  [nested|flat] 5+ messages in thread


end of thread, other threads:[~2007-03-11 16:54 UTC | newest]

Thread overview: 5+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2007-03-11 14:20 Alternative Serial Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-03-11 14:47 ` Milen A. Radev <milen@radev.net>
2007-03-11 15:08   ` Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-03-11 16:54     ` Milen A. Radev <milen@radev.net>
2007-03-11 16:53 ` A. Kretschmer <andreas.kretschmer@schollglas.com>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox