Temat: Trigger update'ujacy pole typu DATE
Witam wszystkich serdecznie.
W myśl: "Żadne pytanie nie jest zbyt proste dla tego działu." proszę o pomoc w poniższym problemie:
Chciałbym stworzyć wyzwalacz, który po spełnieniu pewnego warunku zaktualizuje wiersz wstawiając nową datę.
Mam następująca tabelę POZYCZKI:
Column | Type | Modifiers
-----------------------+----------------+---------------------------------------------------------------------
id_pozyczki | integer | not null PRIMARY KEY
id_kontrahent | integer | not null
data_pozyczki | date | not null
ilosc_pozyczki | numeric(6,2) | not null
splata_pozyczki | numeric(6,2) | default 0
kierunek_pozyczki | character(1) |
data_splaty | date |
wypełniam ją insertem:
insert into pozyczki (id_kontrahent, data_pozyczki, ilosc_pozyczki, kierunek_pozyczki) values (1, 2009-06-10, 400, 1);
następnie robie update:
update pozyczki set splata_pozczyki = 400 where id_pozyczki = 1;
Chciałbym, żeby po każdym update'cie było sprawdzanie czy pola ilosc_pozyczki i splata_pozyczki są równe i jeśli tak to automatycznie wypełnia się pole data_splaty aktualną datą.
poniżej wkleje moje "próby":
-- trigger uruchamiajacy funkcje...
create trigger trig_splata
after update on kasa_pozyczki
for each row
execute procedure splata_trigger();
-- funkcja..
create function splata_trigger() returns opaque AS'
declare
-- aktualna_data date:= current_date;
BEGIN
if(old.ilosc_pozyczki = new.splata_pozyczki ) then
-- NEW.data_splaty = now();
update kasa_pozyczki set data_splaty = (select current_date);-- WHERE splata_pozyczki = NEW.splata_pozyczki;
return NEW;
else
return NULL;
end if;
END;
' language 'plpgsql';
I niestety to nie działa pl/pgsql dopiero zaczynam proszę o wyrozumiałość;)
Bardzo proszę o pomoc. Z góry dziękuję