saludos, esta función cuando la ejecuto me borra los datos de la tabla conceptodetalle, como si no tomara en cuenta la clausula where, y si descomento las otras lineas me borra el contenido de las 3 tablas.
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION borrarnomina(id_nomina INTEGER)
RETURNS INTEGER AS
$$
DECLARE
tempo INTEGER;
id alias FOR $1;
BEGIN
RAISE NOTICE 'id(%)', id;
DELETE FROM ONLY conceptodetalle WHERE id_nomina=id;
--execute cadena into tempo;
--if (FOUND)
-- then
-- delete from only detallenomina where id_nomina=$1;
-- execute cadena into tempo;
--if (FOUND)
-- then
-- delete from only nomina where id_nomina=$1;
--execute cadena into tempo;
--if (FOUND) --tempo
-- then
-- commit;
-- return 1;
--else
-- rollback;
--return 0;
-- end if;
--else
-- rollback;
-- return 0;
--end if;
--else
-- rollback;
--return 0;
--end if;
RETURN 1;
END;
$$
LANGUAGE 'plpgsql';
destaco que las tablas estan relacionados de la siguiente manera
nomina clave primaria: id_nomina
detallenomina clave primaria: (id_nomina , nronom); fk: id_nomina
concepto detalle clave primaria: (id_nomina, nronom, ccon); fk: (id_nomina,nronom)
no le veo ni pies ni cabeza. el raise notice lo coloque para saber si el parametro de entrada lo estaba tomando bien. alguna ayuda please..!!
edit: quiero agregar que si el delete lo ejecuto como una sentencia sql comun, el delete se ejecuta perfectamente, solo borrando los registros cuyo id_nomina sea el especificado.