Trigger and arguments question
Hi everybody!
I have a trigger like this:
CREATE TRIGGER mytrigger
AFTER INSERT OR UPDATE OR DELETE
ON myschema.mytable
FOR EACH ROW
EXECUTE PROCEDURE myschema.myfunction(myarg);
It sends an argument to myfunction(), and I can retrieve this value in
TG_ARGV[0]. Fine.
What I'm trying to do is using TG_ARGV[0] to point to a field in NEW or OLD.
Is it possible?
Something like NEW.TG_ARGV[0]...
I'm trying to write a kind of generic function which I could use on multiple
tables with different field names (myarg being the field name).
But I can't get it to work.
Any clues or other solutions?
Thanks,
-- Hervé Inisan.
On 5/26/05, Hervé Inisan <typo3@self-access.com> wrote:
Hi everybody!
I have a trigger like this:
CREATE TRIGGER mytrigger
AFTER INSERT OR UPDATE OR DELETE
ON myschema.mytable
FOR EACH ROW
EXECUTE PROCEDURE myschema.myfunction(myarg);It sends an argument to myfunction(), and I can retrieve this value in
TG_ARGV[0]. Fine.
What I'm trying to do is using TG_ARGV[0] to point to a field in NEW or OLD.
Is it possible?Something like NEW.TG_ARGV[0]...
I'm trying to write a kind of generic function which I could use on multiple
tables with different field names (myarg being the field name).
But I can't get it to work.Any clues or other solutions?
No. the argument of the trigger must be a string literal defined at
creation time.
maybe you better solution is simply a function
--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
Hervé Inisan wrote:
Hi everybody!
I have a trigger like this:
CREATE TRIGGER mytrigger
AFTER INSERT OR UPDATE OR DELETE
ON myschema.mytable
FOR EACH ROW
EXECUTE PROCEDURE myschema.myfunction(myarg);It sends an argument to myfunction(), and I can retrieve this value in
TG_ARGV[0]. Fine.
What I'm trying to do is using TG_ARGV[0] to point to a field in NEW or OLD.
Is it possible?
You'll be missing OLD and NEW on INSERT and DELETE respectively, I'm
afraid. You may want to split your triggers for different events.
--
Alban Hertroys
MAG Productions
T: +31(0)53 4346874
F: +31(0)53 4346876
E: alban@magproductions.nl
W: http://www.magproductions.nl
Hervé Inisan wrote:
Hi everybody!
I have a trigger like this:
CREATE TRIGGER mytrigger
AFTER INSERT OR UPDATE OR DELETE
ON myschema.mytable
FOR EACH ROW
EXECUTE PROCEDURE myschema.myfunction(myarg);It sends an argument to myfunction(), and I can retrieve
this value in
TG_ARGV[0]. Fine.
What I'm trying to do is using TG_ARGV[0] to point to afield in NEW or OLD.
Is it possible?
You'll be missing OLD and NEW on INSERT and DELETE
respectively, I'm afraid. You may want to split your triggers
for different events.
Thank you all for your answers.
I tried with EXECUTE, with you're right: no way to build a NEW.field
dynamically.
-- Hervé Inisan.
On Thu, 26 May 2005, [iso-8859-1] Herv� Inisan wrote:
It sends an argument to myfunction(), and I can retrieve this value in
TG_ARGV[0]. Fine.
What I'm trying to do is using TG_ARGV[0] to point to a field in NEW or OLD.
Is it possible?Something like NEW.TG_ARGV[0]...
I'm trying to write a kind of generic function which I could use on multiple
tables with different field names (myarg being the field name).
But I can't get it to work.Any clues or other solutions?
If you're using plpgsql, that's not possible. It should be possible in
some of the other pl languges, however.