From: | "Furesz Peter" <fureszpeter(at)srv(dot)hu> |
---|---|
To: | "postgres levlista" <pgsql-general(at)postgresql(dot)org> |
Subject: | trigger question |
Date: | 2007-01-16 17:35:56 |
Message-ID: | 001001c73994$c72ee1f0$0202fea9@bixerverintel |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello,
I have a table named foobar and I don't want to allow from DELETE or UPDATE
its rows.
I have a table as described below:
foobar(foobar_id, value, is_deleted);
I don't want to allow directly delete or modify the table's rows. I plan to
make an on before update or delete trigger and
on delete action I update the actual row is_deleted flag, on UPDATE action I
also update the is_deleted flag and I insert a new row with the new values.
Everything is ok, but when I capture the delete action I am execute an
update what triggering the trigger again and I got an unwanted row.
CREATE TRIGGER "tr_foobar" BEFORE UPDATE OR DELETE ON "public"."foobar" FOR
EACH ROW
EXECUTE PROCEDURE "public"."tr_foobar_func"();
BEGIN
IF TG_OP='DELETE' THEN
UPDATE foobar SET is_deleted=TRUE WHERE foobar_id=OLD.foobar;
RETURN NULL;
ELSEIF TG_OP='UPDATE' THEN
INSERT INTO foobar(value) VALUES(NEW.value);
NEW.is_deleted=TRUE;
NEW.value=OLD.value;
RETURN NEW;
END IF;
END;
What is the right solution for this situation. Thank you for the help!
From | Date | Subject | |
---|---|---|---|
Next Message | Furesz Peter | 2007-01-16 17:45:05 | trigger howto question |
Previous Message | Filip Rembiałkowski | 2007-01-16 17:18:00 | Re: Coercion in PGSQL? |