Thread: abs() does not exists..
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..
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.. >
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
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?
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? >