Обсуждение: How to create a trigger

Поиск
Список
Период
Сортировка

How to create a trigger

От
"Laurent Duperval"
Дата:
Hello,

I know nothing about triggers so I need a little hand-holding here. I'm
taking an Oracle script and converting it to pgsql. One of the things
that the Oracle database supports is a trigger on dates. So there are two
fields in the table, CREATION_DATE and UPDATE_DATE.

In the CREAT TABLE statement, I can set both dates using DEFAULT (once I
figure out how to get today's date in). But hoiw would I write a trigger
that changes the update_date to use the current time? Basically, I guess
it would be

create trigger date_update before update on mytable
    for each statement execut procedure [procedure that inserts a date
for me in the update_date column]

So what would I be doing for the portion in brackets?

Thanks,

L

--
Laurent Duperval <mailto:lduperval@microcelli5.com>

Les plus vigoureux coups de main au destin n'aboutissent pas toujours dans la
vie, aux démarrages qu'on attendait.
                                             -Alambic Talon

Re: How to create a trigger

От
"Thomas F. O'Connell"
Дата:
> create trigger date_update before update on mytable
>     for each statement execut procedure [procedure that inserts a date
> for me in the update_date column]
>
> So what would I be doing for the portion in brackets?


at that point you need a function.

check out the CREATE FUNCTION syntax in the docs
(http://www.postgresql.org/idocs/index.php?sql-createfunction.html).

for what you were talking about, it seems like something as simple as

create function trigger_before_update_mytable() returns opaque as '
begin
    new.update_date = now();
    return new;
end;
' as language 'plpgsql';

would work.

then your last line of the trigger statement would be:

for each statement execut procedure trigger_before_update_mytable();

good luck.

-tfo





Re: Re: How to create a trigger

От
Joseph Shraibman
Дата:
See
http://www.brasileiro.net/postgres/cookbook/view-one-recipe.adp?recipe_id=10

"Thomas F. O'Connell" wrote:
>
> > create trigger date_update before update on mytable
> >     for each statement execut procedure [procedure that inserts a date
> > for me in the update_date column]
> >
> > So what would I be doing for the portion in brackets?
>
> at that point you need a function.
>
> check out the CREATE FUNCTION syntax in the docs
> (http://www.postgresql.org/idocs/index.php?sql-createfunction.html).
>
> for what you were talking about, it seems like something as simple as
>
> create function trigger_before_update_mytable() returns opaque as '
> begin
>         new.update_date = now();
>         return new;
> end;
> ' as language 'plpgsql';
>
> would work.
>
> then your last line of the trigger statement would be:
>
> for each statement execut procedure trigger_before_update_mytable();
>
> good luck.
>
> -tfo
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com