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 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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
From | Date | Subject | |
---|---|---|---|
Next Message | arturo chavarro | 2010-03-18 16:07:40 | Como saber si esta habilitado pl,funciones y tigres |
Previous Message | Cesar Martin | 2010-03-18 09:18:59 | Re: Instalar postgres a 64 bits |