Witam was. Mam problem z moim triggerem :
-- Function: zamelemdelete()
-- DROP FUNCTION zamelemdelete();
CREATE OR REPLACE FUNCTION zamelemdelete()
RETURNS trigger AS
$BODY$
BEGIN
IF EXISTS(SELECT 1 FROM zamnag where zamn_gidnumer = old.zame_gidnumer and zamn_zatwierdzony = false) THEN
return new;
ELSE
IF EXISTS(SELECT 1 FROM zamnag where zamn_gidnumer = old.zame_gidnumer and zamn_zatwierdzony = TRUE and zamn_sprz = false) THEN
IF (SELECT CASE WHEN (SELECT sum(zame_ilosc) FROM zamelem INNER JOIN zamnag on zamn_gidnumer = zame_gidnumer and zamn_zatwierdzony = true and zame_twrgidnumer = old.zame_twrgidnumer and zamn_sprz = FALSE) IS NULL then 0 ELSE (SELECT sum(zame_ilosc) FROM zamelem INNER JOIN zamnag on zamn_gidnumer = zame_gidnumer and zamn_zatwierdzony = true and zame_twrgidnumer = old.zame_twrgidnumer and zamn_sprz = FALSE) END - CASE WHEN (SELECT sum(zame_ilosc) FROM zamelem INNER JOIN zamnag on zamn_gidnumer = zame_gidnumer and zamn_zatwierdzony = true and zame_twrgidnumer = zame_gidnumer and zamn_sprz = TRUE) IS NULL then 0 ELSE (SELECT sum(zame_ilosc) FROM zamelem INNER JOIN zamnag on zamn_gidnumer = zame_gidnumer and zamn_zatwierdzony = true and zame_twrgidnumer = old.zame_twrgidnumer and zamn_sprz = TRUE) end FROM twrkarty where twr_gidnumer = old.zame_twrgidnumer) > old.zame_ilosc THEN
return new;
ELSE
RAISE 'Jeden Z Towarów Nie Został zwrócony ze względu na brak ilości do zwrotu !';
END IF;
ELSE
return new;
END IF;
END IF;
return new;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION zamelemdelete()
OWNER TO postgres;
Triger niby się wywołuje odpowiednio, wchodzi gdzie ma wchodzić lecz nie usuwa rekordów podczas spełnienia warunków. Warunki sprawdziłem i wszystko jest OK skrypt również dochodzi do return new w odpowiednich miejsach ale i tak rekord caly czas istnieje. Gdy odłącze triggera rekordy da się usuwać