| From: | Alban Hertroys <dalroi(at)solfertje(dot)student(dot)utwente(dot)nl> |
|---|---|
| To: | Pablo Romero Abiti <pabiti(at)yahoo(dot)com> |
| Cc: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: Update columns in same table from update trigger? |
| Date: | 2011-07-23 08:59:15 |
| Message-ID: | 39387FA6-D473-4575-BC81-F9A4A1FEBE07@solfertje.student.utwente.nl |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On 22 Jul 2011, at 22:02, Pablo Romero Abiti wrote:
> The problem I'm facing is that the trigger before update won't execute if there isn't a row with idcol=3 in the table warehouse.
>
> Here's my code:
>
> CREATE OR REPLACE FUNCTION update_warehouse() returns "trigger" AS '
> declare idcolmaestro float:=0;
> BEGIN
> select into a idcolor1 from color_eq where idcolor2=old.idcolor;
You didn't declare 'a'. Perhaps you meant to use idcolmaestro?
> if a is null then
Try 'if NOT FOUND' here instead.
> a=old.idcolor;
> end if;
>
> new.idcolor=a;
> return new;
> END;
> ' LANGUAGE 'plpgsql' VOLATILE;
I'd probably change this code a bit so that the assignment to idcolor only takes place if a value with idcolor2=old.idvalue was found:
if FOUND then
new.idcolor := a;
endif
return new;
That saves a few unnecessary CPU cycles.
Alban Hertroys
--
The scale of a problem often equals the size of an ego.
!DSPAM:737,4e2a8d6912091302916282!
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Gavin Flower | 2011-07-23 09:01:41 | Re: Implementing "thick"/"fat" databases |
| Previous Message | Darren Duncan | 2011-07-23 01:32:53 | Re: Implementing "thick"/"fat" databases |