Re: Referential integrity vulnerability in 8.3.3
От | Richard Huxton |
---|---|
Тема | Re: Referential integrity vulnerability in 8.3.3 |
Дата | |
Msg-id | 487C916A.1090505@archonet.com обсуждение исходный текст |
Ответ на | Referential integrity vulnerability in 8.3.3 ("Sergey Konoplev" <gray.ru@gmail.com>) |
Ответы |
Re: Referential integrity vulnerability in 8.3.3
|
Список | pgsql-general |
Sergey Konoplev wrote: > There is an oddity (or a bug) in situation with returning null before > delete trigger and referential integrity in PG 8.3.3. I tryed to find > a solution in Google and PG documentation and have noticed nothing > useful. [snip] > CREATE OR REPLACE FUNCTION tr_stop() > RETURNS trigger AS > $BODY$begin > return null; > end;$BODY$ > LANGUAGE 'plpgsql' VOLATILE; > > CREATE TRIGGER tr_stop > BEFORE DELETE > ON table2 > FOR EACH ROW > EXECUTE PROCEDURE tr_stop(); [snip] > Now comming to a head. As I supposed earlier, deletion from table1 has > to be prevented by referential integrity when the trigger prevents > deletion of refered row from table2. But it doesn't. [snip] > Will you explain me please why PG behave so cos IMHO it's a bit > illogical. Thanx. Your trigger doesn't prevent deletion, it just skips the row(s) in question from being affected. Raise an exception if you want to abort the transaction. See the manual - triggers chapter and plpgsql chapter for more details. -- Richard Huxton Archonet Ltd
В списке pgsql-general по дате отправления: