Bug: table inheritance. Trigger before DELETE for each statement is ignored

Поиск
Список
Период
Сортировка
От Konstantin Nikiforov
Тема Bug: table inheritance. Trigger before DELETE for each statement is ignored
Дата
Msg-id 20101202232343.02f9246c@alkaida
обсуждение исходный текст
Ответы Re: Bug: table inheritance. Trigger before DELETE for each statement is ignored  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Version: postgresql 9.0.1
Step to reproduce: use following code. It creates two tables (parent
"xtest" and inherited "xtest_inh"), creates trigger function, creates
BEFORE INSERT/UPDATE/DELETE trigger.

*************************************
CREATE TABLE xtest (id serial, data varchar, primary key(id));
CREATE TABLE xtest_inh (check (id > 0), primary key(id))=20
 INHERITS (xtest);=20

-- insert some data to inherited table "xtest_inh"
INSERT INTO xtest_inh(data) values ('ddd'), ('lol'), ('olo');

-- this function just raises an exception every time
CREATE FUNCTION just_raise_exception_tg() returns trigger as $$
BEGIN=20
    raise exception 'aaaaaaaaaaaaaaaaaaaaa!';
END; $$ language plpgsql;

-- adding STATEMENT-level trigger to inherited table "xtest_inh"
CREATE TRIGGER just_raise_exception_tg=20
 BEFORE INSERT OR UPDATE OF data OR DELETE ON xtest_inh
 FOR EACH STATEMENT execute procedure just_raise_exception_tg(2);

-- do some operations, that should cause to trigger the table
-- INSERT into xtest_inh(data) values ('omg');
DELETE from xtest where id =3D 2;

drop table xtest cascade;
drop function just_raise_exception_tg() cascade;

**********************************

Expected result: exception will be raised before deletion of rows is
done.

Real result: no exception occurs. One of rows is really deleted.
The trigger is ignored.

Comments:=20
1. You can uncomment INSERT statement, and try again: exception
will be thrown. BEFORE INSERT works, BEFORE delete - no.
2. If i create trigger FOR EACH STATEMENT, it will work ok for insert,
update and delete.
3. AFTER DELETE statement-level trigger also does not work at all.

bug?

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

Предыдущее
От: Jorge Augusto Meira
Дата:
Сообщение: Problems with max_connections parameter
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Bug: table inheritance. Trigger before DELETE for each statement is ignored