Hello, what is the parser trying to tell me? (7.4.2 if it matters) test=# CREATE OR REPLACE FUNCTION SYNC_COUPLECOUNT() test-# RETURNS TRIGGER test-# AS ' test'# BEGIN test'# IF TG_OP = ''INSERT'' THEN test'# UPDATE _calls test'# SET test'# realcouplecount = realcouplecount + 1 test'# WHERE test'# id = NEW.callid; test'# ELSEIF TG_OP = ''DELETE'' THEN test'# UPDATE _calls test'# SET test'# realcouplecount = realcouplecount - 1 test'# WHERE test'# id = NEW.callid; test'# END IF; test'# RETURN NEW; test'# END; test'# ' test-# LANGUAGE plpgsql; CREATE FUNCTION test=# CREATE TRIGGER triginsdel test-# AFTER INSERT OR DELETE ON _couples test-# FOR EACH ROW EXECUTE PROCEDURE SYNC_COUPLECOUNT(); CREATE TRIGGER test=# insert into _couples (id, callid) values (get_next_coupleid(), 1); ERROR: syntax error at or near "ELSEIF" at character 1 CONTEXT: PL/pgSQL function "sync_couplecount" line 8 at SQL statement On a related note: if I replace NEW with OLD in the second UPDATE (in the ELSEIF branch), I get: test=# insert into _couples (id, callid) values (get_next_coupleid(), 1); ERROR: record "old" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function "sync_couplecount" line 8 at SQL statement What's wrong with that? -- FreeBSD 4.10-STABLE 12:48PM up 1 day, 6:53, 2 users, load averages: 0.05, 0.05, 0.00 ---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings