Trigger function not executing

Поиск
Список
Период
Сортировка
От Donald Fraser
Тема Trigger function not executing
Дата
Msg-id 003501c2cdd2$b55ca890$1664a8c0@DEMOLITION
обсуждение исходный текст
Ответы Re: Trigger function not executing  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
OS: Redhat, kernel 2.4
PostgreSQL 7.3.1 on i686-pc-linux-gnu, compiled by GCC 2.96

I have a table that has two triggers functions applied to it
1) CREATE TRIGGER trig_delete_user BEFORE DELETE ON tbl_user FOR EACH ROW E=
XECUTE PROCEDURE delete_user();
2) CREATE TRIGGER trig_insert_sys_user AFTER INSERT OR DELETE OR UPDATE ON =
tbl_user FOR EACH ROW EXECUTE PROCEDURE insert_sys_user();

The BEFORE trigger function basically does nothing to modify the tuple in a=
ny way. It does run a SELECT on the same table to do some routine checks an=
d before it can exit the function it sets a global flag to tell the AFTER t=
rigger function what to do.

The AFTER trigger function resets the flag set by the BEFORE function and t=
hen performs some administration commands for users . In this instance it i=
ssues a "DROP USER" command.

I've included the above summary as an insight to where the problem may be.

Here is the problem:
If I run SQL such as DELETE FROM tbl_user WHERE id =3D '2'; then I don't ge=
t any problems.
If I run SQL such as DELETE FROM tbl_user WHERE id > '40'; and there is onl=
y one record that meets the condition (id > '40') then I don't get any prob=
lems.
If I run SQL such as DELETE FROM tbl_user WHERE id > '20'; and there is mor=
e than one record that meets the condition (id > '20') then I get the follo=
wing problem. The BEFORE trigger function is only being called on the first=
 record that is being deleted yet the AFTER function is being called on all=
 of the records - well in this case it only gets to the second record and f=
ails because the flag has not been set by the BEFORE function. Just to re-i=
terate - the BFORE function is very simple - it cannot exit the function wi=
thout setting the flag I have mentioned.

Have I misunderstood trigger functions or is this a legitimate bug?

Regards
Donald Fraser

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

Предыдущее
От: pgsql-bugs@postgresql.org
Дата:
Сообщение: Bug #893: Trigger causes database to crash
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Trigger function not executing