Thread: Trigger Documentation

Trigger Documentation

From
al_nunes@ciclotecnologia.com.br
Date:
Hi,

I could not find enough examples about the usage of triggers with
PostgreSQL. Searching in the list files, I found out that there are some
examples in contrib/spi/ directory, but this examples scared me a little
because all the triggers are written in C.

What I need to do now is very simple, I want to make a trigger that check
if some text field is null. If it is, I want to record something on
it. What I was trying (unsuccessfully):

CREATE FUNCTION ins_ip() RETURNS OPAQUE AS '
BEGIN
 IF NEW.<field> ISNULL THEN
  NEW.<field> := "something";
   RETURN NEW;
END;
' LANGUAGE 'plpgsql';


CREATE TRIGGER tr_ponto_ins BEFORE INSERT OR UPDATE ON ponto
    FOR EACH ROW EXECUTE PROCEDURE ins_ip();


Ie tryed to put something beetwen quotes, double-quotes, nothing
worked. Will I have to write an enormous trigger in C?

Regards,

Alvaro Nunes Melo



Re: Trigger Documentation

From
hubert depesz lubaczewski
Date:
On Fri, 8 Jun 2001 11:55:08 -0300 (BRT)
al_nunes@ciclotecnologia.com.br wrote:

> What I need to do now is very simple, I want to make a trigger that
check
> if some text field is null. If it is, I want to record something on
> it. What I was trying (unsuccessfully):
> CREATE FUNCTION ins_ip() RETURNS OPAQUE AS '
> BEGIN
>  IF NEW.<field> ISNULL THEN
>   NEW.<field> := "something";
>    RETURN NEW;
> END;

you're missing two things.
1st. there should be end if
2nd. is should be NEW.<field> := ''something'';

btw. it's better to do it with "DEFAULT" statement in create table.

depesz

--
hubert depesz lubaczewski                          http://www.depesz.pl/
------------------------------------------------------------------------
     najwspanialszą rzeczą jaką dało nam nowoczesne społeczeństwo,
      jest niesamowita wręcz łatwość unikania kontaktów z nim ...