From: | Jamie Deppeler <jamie(at)doitonce(dot)net(dot)au> |
---|---|
To: | PostgreSQL General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: stack depth limit exceeded |
Date: | 2005-08-29 03:45:32 |
Message-ID: | 431284DC.5000306@doitonce.net.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
What i am trying to do is update the field contact with field values in
firstname and lastname
Trigger
CREATE TRIGGER "updateContact" AFTER INSERT OR UPDATE
ON FOR EACH ROW
EXECUTE PROCEDURE "contacts"."addContactField"();
Procedure
CREATE OR REPLACE FUNCTION "contacts"."addContactField" () RETURNS
trigger AS
$body$
begin
update contacts.person
set "contact" = new.firstname
where person."primary" = new."primary";
return null;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Tom Lane wrote:
>Jamie Deppeler <jamie(at)doitonce(dot)net(dot)au> writes:
>
>
>>At the moment i am trying to execute a very simple function but i am
>>getting the following error stack depth limit exceeded
>>
>>
>
>You didn't really show the complete context, but seeing that this is a
>trigger and it's trying to do an "UPDATE person" internally, I'll bet
>a nickel that the trigger itself is on update events on person, and
>therefore that you've written an infinite recursion.
>
>Had you shown more context, I could have given some advice on a better
>way to do it. If you're trying to alter the row that's about to be
>stored, you just have to assign to field(s) of the NEW row within the
>trigger. If you want to do something else, you need to explain what.
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 4: Have you searched our list archives?
>
> http://archives.postgresql.org
>
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Surabhi Ahuja | 2005-08-29 07:43:00 | Re: regarding threads and transactions - problem 2 |
Previous Message | John D. Burger | 2005-08-29 03:10:02 | Re: About "ERROR: must be *superuser* to COPY to or from a file" |