From: | "fernando gamba" <gamba(dot)fernando(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | problema de novato con cursores |
Date: | 2007-06-13 12:27:32 |
Message-ID: | e355e6800706130527u1136562u35b38a1f5856f7ff@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
hola a todos muy bueno el sitio, felicitaciones...
mi problema es el siguiente: deseo sincronizar dos tablas iguales de
dos DB diferentes , una es sucursal y la otra casa central. Para
ello, me valgo de una columna tipo timestamp en cada tabla, el
algoritmo seria:
recorro la tabla a actualizar (tito en el ejemplo), busco ultima fecha
de actualizacion (columna "creada"), recorro tabla de casa central que
tiene las actualizaciones (pepe en el ejemplo) y busco aquellas filas
que tienen columna "creada" mayor que la que recupere de la tabla
tito, cargo un cursor, y luego voy haciendo insert o updates segun
corresponda en la tabla tito
Aca esta el codigo:
(las tablas pepe y tito tienen la misma estructura)
DECLARE
....
Desde timestamp;
curpepe refcursor;
regpepe pepe%ROWTYPE;
....
BEGIN
...
Desde:= select into Desde COALESCE(max(creada),0) from tito;
contador:=0;
OPEN curpepe FOR
SELECT * FROM pepe WHERE creada > Desde;
LOOP
FETCH curpepe INTO regpepe;
IF (EXISTS (SELECT idtito FROM tito WHERE idtito = regpepe.idpepe))
THEN
UPDATE tito
SET nombre = regpepe.nombre,
creada = regpepe.creada
WHERE idtito = regpepe.idpepe;
ELSE
INSERT INTO tito(idtito, nombre, creada)
VALUES (regpepe.idpepe, regpepe.nombre, regpepe.creada);
END IF;
--EXIT WHEN NOT FOUND;
contador := contador + 1;
RAISE NOTICE 'contador %', contador;
END LOOP;
CLOSE curpepe;
el problema es que el ultimo renglon que trata de insertar es nulo,
pero no veo donde esta la falla, paso el log:
ERROR: null value in column "idtito" violates not-null constraint
CONTEXT: SQL statement "INSERT INTO tito(idtito, nombre, creada)
VALUES ( $1 , $2 , $3 )"
desde ya muchas gracias por cualquier ayuda y espero haber sido claro
con la exposicion del problema
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-06-13 12:51:08 | Re: Seguridad |
Previous Message | Mario Gonzalez | 2007-06-13 12:26:25 | Re: Seguridad |