Skip site navigation (1) Skip section navigation (2)

Re: Función para un disparador (control del campo serial)

From: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
To: Joac <jgarcil(at)hotmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Función para un disparador (control del campo serial)
Date: 2010-03-18 14:20:44
Message-ID: 4BA236BC.8030600@cajazacate.com.sv (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Joac escribió:
> CREATE TABLE salida
> (
> salcod serial NOT NULL,
>   entpar numeric(10) NOT NULL,
> salfec date NOT NULL,
>   salcan numeric(4) NOT NULL,
> CONSTRAINT salida_pk PRIMARY KEY (salcod)
> )
> WITH (
> OIDS=FALSE
> );

Yo he tomado tu script y lo ejecute según la definición de arriba, 
prácticamente hace lo mismo que tu tienes, he quitado nada más una llave 
foránea hacia otra tabla y la creación de la secuencia, porque está 
implícito en la creación de los campos serial.
En otras palabras, ejecutando ese script se crea también la secuencia y 
lo más importante es que al campo "salcod" se lo asigna como valor 
default, si te fijas en los catálogos o usando el pgAdmin ese campo 
tiene como valor default lo siguiente: 
"nextval('salida_salcod_seq'::regclass)"



A lo que me refiero es a que quites ese valor default del campo "salcod" 
para que el trigger cuando de error no utilice un valor de la secuencia.

así: ALTER TABLE salida ALTER COLUMN salcod DROP DEFAULT;


Y que el valor del campo "salcod", tú se lo asignes hasta que tu trigger 
válide todo lo que tenga que validar; asi:
NEW.salcod=nextval('salida_salcod_seq'::regclass);



-- 
Cordialmente,
Juan Ramírez
El Salvador

In response to

pgsql-es-ayuda by date

Next:From: arturo chavarroDate: 2010-03-18 16:07:40
Subject: Como saber si esta habilitado pl,funciones y tigres
Previous:From: Cesar MartinDate: 2010-03-18 09:18:59
Subject: Re: Instalar postgres a 64 bits

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group