pl/pgsql trigger: syntax error at or near "ELSEIF" - Mailing list pgsql-general

From Roman Neuhauser
Subject pl/pgsql trigger: syntax error at or near "ELSEIF"
Date
Msg-id 20050114120625.GA11065@isis.wad.cz
Whole thread Raw
Responses Re: pl/pgsql trigger: syntax error at or near "ELSEIF"  (Pavel Stehule <stehule@kix.fsv.cvut.cz>)
Re: pl/pgsql trigger: syntax error at or near "ELSEIF"  (Alban Hertroys <alban@magproductions.nl>)
List pgsql-general
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

pgsql-general by date:

Previous
From: "Laurent Marzullo"
Date:
Subject: PQexecParams and CURSOR
Next
From: Jiří Němec
Date:
Subject: Insufficient system resources for PostgreSQL 7.4.x?