Try ... EXECUTE PROCEDURE customer_num_informix() Steve
On Fri, Feb 12, 2021 at 6:47 AM James B. Byrne <byrn...@harte-lyne.ca> wrote: > 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:byrn...@harte-lyne.ca > 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 > > > >