Re: Stored Procedure / Trigger Strangeness

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Stored Procedure / Trigger Strangeness
Дата
Msg-id 18388.1008949300@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Stored Procedure / Trigger Strangeness  (laotse@lumberjack.snurgle.org)
Ответы Re: Stored Procedure / Trigger Strangeness  (laotse@lumberjack.snurgle.org)
Re: Stored Procedure / Trigger Strangeness  (Darren Ferguson <darren@crystalballinc.com>)
Список pgsql-general
laotse@lumberjack.snurgle.org writes:
> ------------------------------------------------------------------ CREATE
> TRIGGER fti_employee_lastname AFTER UPDATE OR INSERT OR DELETE ON person
> FOR EACH ROW EXECUTE PROCEDURE fti(fti, lastname);

> CREATE TRIGGER fti_employee_firstname AFTER UPDATE OR INSERT OR DELETE ON
> person FOR EACH ROW EXECUTE PROCEDURE fti(fti, firstname);

> CREATE TRIGGER fti_employee_screenname AFTER UPDATE OR INSERT OR DELETE ON
> person FOR EACH ROW EXECUTE PROCEDURE fti(fti, screenname);

This will not work because there's no guarantee about the order of the
execution of the triggers.  I haven't worked with fti much, but it's
obvious that it expects you to have only *one* trigger relating a given
indextable to the master --- on update, the trigger deletes all existing
indextable rows for that master row.

It looks like the intended way to index multiple columns using a single
indextable is

CREATE TRIGGER fti_person AFTER UPDATE OR INSERT OR DELETE ON person
FOR EACH ROW EXECUTE PROCEDURE fti(fti, firstname, lastname, screenname);

Or you could use a separate indextable for each column, but that might
not be what you want.

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: laotse@lumberjack.snurgle.org
Дата:
Сообщение: Stored Procedure / Trigger Strangeness
Следующее
От: laotse@lumberjack.snurgle.org
Дата:
Сообщение: Re: Stored Procedure / Trigger Strangeness