Thread: abs() does not exists..

abs() does not exists..

From
"mazzo"
Date:
Hi all..i'm trying to create a trigger that fires before i insert a value into a column and if the value i insert is negative, it will change it to positive...
I was trying with:
 
create trigger postv before insert on my_table for each row execute procedure abs (column);
 
But this doesn't seem to work and gives me the error i wrote in the subject...
 
Can anyone help me out please..??
Sorry if i post here but i looked on deja.com but i didn't find anything..
 
Thanks in advance..

Re: abs() does not exists..

From
Stephan Szabo
Date:
Trigger functions take no arguments (their arguments
are passed in differently) and return opaque.
That's why it's looking for abs() rather than
abs(<type>).

Write a plpgsql trigger function that makes the
change to the value.

On Tue, 12 Jun 2001, mazzo wrote:

> Hi all..i'm trying to create a trigger that fires before i insert a
> value into a column and if the value i insert is negative, it will
> change it to positive... I was trying with:
>
> create trigger postv before insert on my_table for each row execute
> procedure abs (column);
>
> But this doesn't seem to work and gives me the error i wrote in the
> subject...
>
> Can anyone help me out please..?? Sorry if i post here but i looked on
> deja.com but i didn't find anything..
>
> Thanks in advance..
>


Re: abs() does not exists..

From
Peter Eisentraut
Date:
mazzo writes:

> Hi all..i'm trying to create a trigger that fires before i insert a value into a column and if the value i insert is
negative,it will change it to positive... 
> I was trying with:
>
> create trigger postv before insert on my_table for each row execute procedure abs (column);
>
> But this doesn't seem to work and gives me the error i wrote in the subject...

Trigger procedures and regular functions cannot be mixed.  You need to
write a special procedure that takes the old value and alters it to your
liking.  See programmer's guide how to write trigger functions.  PL/pgSQL
is probably best.

> Sorry if i post here but i looked on deja.com but i didn't find anything..

There are mailing list archives on the postgresql.org site and at
geocrawler.com.

--
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter


Re: abs() does not exists..

From
Bruno Wolff III
Date:
On Wed, Jun 13, 2001 at 12:11:42AM +0200,
  Peter Eisentraut <peter_e@gmx.net> wrote:
> mazzo writes:
>
> > Hi all..i'm trying to create a trigger that fires before i insert a value into a column and if the value i insert
isnegative, it will change it to positive... 

Couldn't you do this using a rule to update the table and a constraint on
the table to prevent bad data from getting into the table without using the
rule?

Re: abs() does not exists..

From
"Rob Arnold"
Date:
How about a trigger/function that does this:

if val < 0 then val = val * -1

--rob

----- Original Message -----
From: "Bruno Wolff III" <bruno@wolff.to>
To: "Peter Eisentraut" <peter_e@gmx.net>
Cc: "mazzo" <jambo@aruba.it>; <pgsql-general@postgresql.org>
Sent: Wednesday, June 13, 2001 10:45 AM
Subject: Re: abs() does not exists..


> On Wed, Jun 13, 2001 at 12:11:42AM +0200,
>   Peter Eisentraut <peter_e@gmx.net> wrote:
> > mazzo writes:
> >
> > > Hi all..i'm trying to create a trigger that fires before i insert a
value into a column and if the value i insert is negative, it will change it
to positive...
>
> Couldn't you do this using a rule to update the table and a constraint on
> the table to prevent bad data from getting into the table without using
the
> rule?
>