| От | Tom Lane |
|---|---|
| Тема | Re: changing an update via rules - caught in recursion |
| Дата | |
| Msg-id | 25314.1058391946@sss.pgh.pa.us обсуждение |
| Ответ на | changing an update via rules - caught in recursion (Lauren Matheson <lmatheson@ivcf.ca>) |
| Ответы |
Re: changing an update via rules - caught in recursion
|
| Список | pgsql-general |
Lauren Matheson <lmatheson@ivcf.ca> writes:
> CREATE RULE contactsecgrp_update_1pg_them
> AS ON UPDATE TO contactsecuritygroup
> WHERE NEW.primarygroup=true
> DO
> UPDATE contactsecuritygroup SET primarygroup=false WHERE contact_id =
> NEW.contact_id and securitygroup_id != NEW.securitygroup_id;
You can't do that, because a rule is a macro expanded during query
preparation, and the above is going to lead to infinite recursion
during macro expansion. (No, the WHERE clause does not stop it,
because the actual value of WHERE is only checked at run time.)
You could make this sort of adjustment in a BEFORE UPDATE trigger,
though.
regards, tom lane
В списке pgsql-general по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера