I am trying to implement a trigger in a PostgreSQL-9.6.17 database: CREATE OR REPLACE FUNCTION customer_num_informix() RETURNS trigger AS $$ BEGIN -- An Aubit/Informix 4GL INSERT statement passes the value 0 to Informix -- DBMS for columns that have the SERIAL data type. Informix will then -- use the incremented serial number in place of 0. PostgreSQL instead -- will simply take the value 0 and replace the incremented serial number. -- This trigger function emulates the Informix DBMS behaviour. -- -- The NEW variable contains the data for the row to be INSERTed or -- UPDATEd. It, and its complement OLD used for UPDATE and DELETE, -- are automatically created and populated by PostgreSQL whenever -- a data-change function is called. -- IF NEW.customer_num = 0 THEN SELECT nextval('customer_customer_num_seq') INTO NEW.customer_customer_num; ELSE IF NEW.customer_customer_num > 0 THEN PERFORM setval('customer_customer_num_seq', NEW.customer_customer_num); END IF; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; ALTER FUNCTION public.customer_num_informix() OWNER TO hll_4gl_testing; CREATE TRIGGER customer_num_serial BEFORE INSERT ON customer FOR EACH ROW EXECUTE customer_num_informix(); The problem is that I am getting a syntax error on the CREATE TRIGGER statement: ERROR: syntax error at or near "customer_num_informix" LINE 3: FOR EACH ROW EXECUTE customer_num_informix(); I do not see what the error is. What is wrong with the syntax I used? -- *** e-Mail is NOT a SECURE channel *** Do NOT transmit sensitive data via e-Mail Unencrypted messages have no legal claim to privacy Do NOT open attachments nor follow links sent by e-Mail James B. Byrne mailto:ByrneJB@xxxxxxxxxxxxx Harte & Lyne Limited http://www.harte-lyne.ca 9 Brockley Drive vox: +1 905 561 1241 Hamilton, Ontario fax: +1 905 561 0757 Canada L8E 3C3