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
|
Список | 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 по дате отправления: