Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2007, 09:20
mariovargascareaga
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años, 1 mes
Puntos: 0
problema insertando la secuencia correcta en tipo de datos serial

tengo la sgte tabla...
tasas
serial character
cod_tasa|descrip
----------------
1 |porcentaje anual
2 |porcentaje mensual
3 |porcentaje trimestral

la funcion para ingresar un nuevo registro es la sgte:

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

cuando ejecuto la funcion select alt_tasa('porcentaje semestral') me sale el sgte error.....
ERROR: duplicate key violates unique constraint "cod_tasa"
Estado SQL:23505
Contexto:SQL statement "INSERT INTO tasas (descrip) VALUES ($1)"
PL/pgSQL function "alt_uni" line 7 at SQL statement

por lo que lei esto no deberia ocurrir porque deberia insertarnos el numero que sigue en nuestra secuencia en este caso 4 pero como sabemos el error pasa porq al tratar de ingresar el campo cod_tasa que es de tipo serial obviamente esta tomando el valor de 1 si lo ejecuto nuevamente tomara el valor 2 y me dara el mismo error
modifique el insert

INSERT INTO tasas
(cod_tasa,descrip)
VALUES
(nextval('tasas_cod_tasa_seq'),des1);

y me sigue haciendo exactamente lo mismo sigue empezando de 1..
COmo puedo hacer para que mi campo serial ingrese apartir del ultimo registro?
es decir en este caso 4
ayuda porfa es urgente... gracias