[Pgsql-ayuda] Contrains

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Tue, 25 Jun 2002 13:19:00 -0500 (CDT)


> 2.- Como puedo crear un campo decimal que se incremente automaticamente.?

(ampliando)

Me gan=F3 la curiosidad...

Cuando creas una tabla que contiene un campo 'serial', una secuencia es
creada autom=E1ticamente:

# CREATE TEMP TABLE "incrementa" ("valor" serial);
NOTICE:  CREATE TABLE will create implicit sequence 'incrementa_valor_seq' =
for SERIAL column 'incrementa.valor'
NOTICE:  CREATE TABLE / UNIQUE will create implicit index 'incrementa_valor=
_key' for table 'incrementa'
CREATE

Si le preguntamos a Postgres (desde psql) cu=E1l es la estructura de la
secuencia:

# select * from incrementa_valor_seq;
    sequence_name     | last_value | increment_by |      max_value      | m=
in_value | cache_value | log_cnt | is_cycled | is_called
----------------------+------------+--------------+---------------------+--=
---------+-------------+---------+-----------+-----------
 incrementa_valor_seq |          1 |            1 | 9223372036854775807 |  =
       1 |           1 |       1 | f         | f
(1 row)

Ahora, en este caso, estamos hablando de enteros... Pero con esto tienes
suficiente para reimplementarlo con un simple (bueno, tal vez un
no-tan-simple ;-) ) trigger.

--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF