CREATE OR REPLACE FUNCTION current_calls () RETURNS opaque AS $$ DECLARE -- Declare variables to hold the information. invite RECORD; BEGIN IF NEW.method = 'INVITE' AND NEW.sip_code = '200' THEN SELECT * INTO invite FROM currently WHERE callid = NEW.callid; IF NOT FOUND THEN INSERT INTO currently (callid) VALUES (NEW.callid); END IF; END IF; IF NEW.method = 'BYE' AND NEW.sip_code = '200' THEN DELETE FROM currently WHERE callid = NEW.callid; END IF; RETURN NEW; END;$$ LANGUAGE 'plpgsql';CREATE OR REPLACE FUNCTION concurrent () RETURNS opaque AS $$ DECLARE -- Declare variables to hold the information. m_calls RECORD; BEGIN SELECT * INTO m_calls FROM concurrent ORDER BY call_time DESC LIMIT 1; IF TG_OP = 'INSERT' THEN INSERT INTO concurrent (calls) VALUES(m_calls.calls + 1); END IF; IF TG_OP = 'DELETE' THEN INSERT INTO concurrent (calls) VALUES(m_calls.calls - 1); END IF; RETURN NEW; END;$$ LANGUAGE 'plpgsql';CREATE TRIGGER concurrent BEFORE INSERT OR DELETE ON currently FOR EACH ROW EXECUTE PROCEDURE concurrent();CREATE TRIGGER currently AFTER INSERT ON acc FOR EACH ROW EXECUTE PROCEDURE current_calls();