trigger question - Mailing list pgsql-general
From | Apu Islam |
---|---|
Subject | trigger question |
Date | |
Msg-id | d70f8db905081617195444c162@mail.gmail.com Whole thread Raw |
Responses |
Re: trigger question
|
List | pgsql-general |
I have a trigger which is not working properly. The error I get is parse error at $1. I am putting the code here for someone to see and comment on. (p/s the double quotes are actually two single quotes) best regards, -apu CREATE FUNCTION cust_call_update() RETURNS TRIGGER AS ' DECLARE hour INT ; zero_dur_count INT; less_ten_dur_count INT ; less_twenty_dur_count INT ; greater_twenty_dur_count INT ; total_calls_count INT ; total_aggr_dur INT ; prefix VARCHAR ; tmp INT ; BEGIN SELECT INTO hour date_part(''hour'', NEW.h323connecttime) ; SELECT INTO prefix substring( NEW.calledstationid from 1 for 4 ) ; SELECT INTO tmp count(*) from customer_stat where prefix = prefix and ip = NEW.cisconasport ; IF tmp >= 1 THEN SELECT INTO zero_dur_count, less_ten_dur_count, less_twenty_dur_count, greater_twenty_dur_count, total_calls_count, total_aggr_dur zero_dur_count, less_ten_dur_count, less_twenty_dur_count, greater_twenty_dur_count, total_calls_count, total_aggr_dur from customer_stat where prefix =''prefix'' and IP = ''NEW.cisconasport'' ; IF NEW.acctsessiontime = 0 THEN UPDATE customer_stat SET zero_dur_count = zero_dur_count + 1, total_calls_count = total_calls_count + 1 where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE IF NEW.acctsessiontime > 0 OR NEW.acctsessiontime[2] < 11 THEN UPDATE customer_stat SET less_ten_dur_count = less_ten_dur_count + 1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE IF NEW.acctsessiontime > 10 OR NEW.acctsessiontime < 21 THEN UPDATE customer_stat SET less_twenty_dur_count = less_twenty_dur_count+1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE UPDATE customer_stat SET greater_twenty_dur_count = greater_twenty_dur_count+1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; END IF ; END IF ; END IF ; END IF ; IF tmp = 0 THEN INSERT INTO customer_stat VALUES ( ''NEW.cisconasport'',NEW.h323connecttime,hour,0,0,0,0,0,''p$ SELECT INTO zero_dur_count, less_ten_dur_count, less_twenty_dur_count, greater_twenty_dur_count, total_calls_count, total_aggr_dur zero_dur_count, less_ten_dur_count, less_twenty_dur_count, greater_twenty_dur_count, total_calls_count, total_aggr_dur FROM customer_stat where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; IF NEW.acctsessiontime = 0 THEN UPDATE customer_stat SET zero_dur_count = zero_dur_count + 1, total_calls_count = total_calls_count + 1 where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE IF NEW.acctsessiontime > 0 OR NEW.acctsessiontime < 11 THEN UPDATE customer_stat SET less_ten_dur_count = less_ten_dur_count + 1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE IF NEW.acctsessiontime > 10 OR NEW.acctsessiontime < 21 THEN UPDATE customer_stat SET less_twenty_dur_count = less_twenty_dur_count+1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; ELSE UPDATE customer_stat SET greater_twenty_dur_count = greater_twenty_dur_count+1, total_calls_count = total_calls_count + 1, total_aggr_dur = total_aggr_dur + NEW.acctsessiontime where prefix = ''prefix'' and IP = ''NEW.cisconasport'' ; END IF ; END IF ; END IF ; END IF; RETURN NULL ; END ; ' LANGUAGE 'plpgsql' ;
pgsql-general by date: