From: | Pablo Braulio <brulics(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Función para controla un campo de la última fila. |
Date: | 2006-05-21 09:04:17 |
Message-ID: | 200605211104.18567.brulics@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos.
Estoy diseñando una función para que me controle si la línea que se borra es
la última. O diciéndolo de otro modo, que sólo permita borrar la última
línea.
Tengo esta tabla:
id | empleado | alta | baja | comentario
------+----------+------------+------------+------------
1044 | 2139 | 2006-01-01 | 2006-03-01 |
1045 | 2139 | 2006-04-01 | |
Lo que quiero hacer es que al hacer un delete del registro que no es el último
(id 1044) muestre un error y no deje borrarlo.
Esta es la función:
CREATE OR REPLACE FUNCTION borrar_baja_empleados() RETURNS TRIGGER AS $$
BEGIN
IF (select max(id) from fechas_personal where empleado = OLD.empleado) >
OLD.id
THEN
RAISE EXCEPTION 'Existen fechas posteriores. No se puede borrar registro.';
END IF;
END;
$$ language plpgsql;
CREATE TRIGGER borrar_baja_empleados BEFORE DELETE ON fechas_personal FOR EACH
ROW EXECUTE PROCEDURE borrar_baja_empleados();
Con esto no me deja borrar ningún registro. Pero si trato de borrar el último
tampoco me deja.
Si intento borrar el anterior, muestra:
ERROR: Existen fechas posteriores. No se puede borrar registro
Estupendo.
Pero si trato de borrar el último.
ERROR: control reached end of trigger procedure without RETURN CONTEXT:
PL/pgSQL function "checkborrarfechas"
No se que está fallando.
--
Saludos.
Pablo.
From | Date | Subject | |
---|---|---|---|
Next Message | linder poclaba lazaro | 2006-05-21 21:10:38 | Re: Función para controla un campo de la última fila. |
Previous Message | Jorge Alejandro Adell | 2006-05-21 04:20:55 | Re: compilacion (bison) |