Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/04/2007, 07:41
mariovargascareaga
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: problema insertando la secuencia correcta en tipo de datos serial

pruebas=# CREATE TABLE tasas (cod_tasa serial, descrip varchar(5));
NOTICE: CREATE TABLE creará una secuencia implícita «tasas_cod_tasa_seq» para la columna serial «tasas.cod_tasa»
CREATE TABLE

pruebas=# INSERT INTO tasas (descrip) VALUES ('anual');
INSERT 0 1
pruebas=# INSERT INTO tasas (descrip) VALUES ('mens');
INSERT 0 1
pruebas=# INSERT INTO tasas (descrip) VALUES ('semes');
INSERT 0 1

pruebas=# SELECT * FROM tasas;
cod_tasa | descrip
----------+-------------
1 | anual
2 | mens
3 | semes
(3 filas)

pruebas=# CREATE OR REPLACE FUNCTION alt_tasa( des1 bpchar)
pruebas-# RETURNS void AS
pruebas-# $BODY$declare
pruebas$# begin
pruebas$# INSERT INTO tasas
pruebas$# (descrip)
pruebas$# VALUES
pruebas$# (des1);
pruebas$# end;
pruebas$# $BODY$
pruebas-# LANGUAGE 'plpgsql' VOLATILE;
CREATE FUNCTION
pruebas=# ALTER FUNCTION alt_tasa( des1 bpchar) OWNER TO postgres;
ALTER FUNCTION

pruebas=# SELECT alt_tasa('porc');
alt_tasa
----------

(1 fila)

pruebas=# SELECT * FROM tasas;
cod_tasa | descrip
----------+---------
1 | anual
2 | mens
3 | semes
4 | porc
(4 filas)


La función, copie y pegue... como veras, me funciona sin problemas...

correctisimo lo que afirmas lo que pasa es que tu estas ingresando los registros desde el primer registro osea estas inicializando la secuencia del serial pero mi caso pasa que las tablas ya tienen los registros son tablas de mas de 10000 datos y cuando trato de ingresar un nuevo registro siempre se inicializa el serial entonces como lo expuse necesito que inicie la serializacion desde el ultimo registro por lo que vi puedo usar la funcion currval() estoy en eso si lo consigo te aviso ....ahhh lo de urgente es una forma de ...... no te preocupes gracias