Received: from sss.pgh.pa.us ([192.204.191.242]) by postgresql.org (8.11.3/8.11.1) with ESMTP id f67JSDa13261 for ; Sat, 7 Jul 2001 15:28:13 -0400 (EDT) (envelope-from tgl@sss.pgh.pa.us) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id f67JS7J29532; Sat, 7 Jul 2001 15:28:07 -0400 (EDT) To: carlino@ilrspa.com cc: pgsql-sql@postgresql.org Subject: Re: Problem with function & trigger In-reply-to: <3B46ED17.9F3EACA4@ilrspa.com> References: <3B46ED17.9F3EACA4@ilrspa.com> Comments: In-reply-to Carlo Vitolo message dated "Sat, 07 Jul 2001 13:05:59 +0200" Date: Sat, 07 Jul 2001 15:28:06 -0400 Message-ID: <29529.994534086@sss.pgh.pa.us> From: Tom Lane X-Archive-Number: 200107/87 X-Sequence-Number: 3871 Carlo Vitolo writes: > This does not work. The error is ERROR: pg_atoi: error in "12.00": can't > parse ".00" What PG version are you running? It seems to work fine for me in current sources: regression=# create table magazzino (quantita numeric(10,2), regression(# descrizione text); CREATE regression=# create table scarico (quantita numeric(10,2), regression(# descrizione text); CREATE regression=# insert into magazzino values(100, 'test1'); INSERT 400688 1 regression=# insert into magazzino values(200, 'test2'); INSERT 400689 1 << create functions and triggers copied from your mail >> regression=# insert into scarico values(10.4, 'test1'); INSERT 400694 1 regression=# select * from magazzino ; quantita | descrizione ----------+------------- 200.00 | test2 89.60 | test1 (2 rows) regression=# delete from scarico; DELETE 1 regression=# select * from magazzino ; quantita | descrizione ----------+------------- 200.00 | test2 100.00 | test1 (2 rows) BTW, the way you are writing the functions seems bizarrely inefficient. Why not just: CREATE FUNCTION "togliscar" () RETURNS opaque AS 'BEGIN UPDATE magazzino SET quantita = quantita - NEW.quantita WHERE descrizione = NEW.descrizione; RETURN NEW; END; ' LANGUAGE 'plpgsql'; regards, tom lane