Обсуждение: ON DELETE rule

Поиск
Список
Период
Сортировка

ON DELETE rule

От
"J.Fernando Moyano"
Дата:
I'm trying to do something like this:

CREATE RULE piezas_delete ASON delete TO piezasDO update materia_prima set usadas=(usadas-1)where
n_material=old.n_material;

The rule is created. OK .... but the action doesn't run like it's supossed.
¿What is wrong?

Is "old" usable with "ON DELETE" rules ???

I think delete action its performed AFTER rule action .... ¿OK?
So ...  it's possible to access field values of delete affectted registers?



-- 
Fernando Moyano

Frase del día:
--------------
No hay cita. Solo son imaginaciones tuyas!!.

(*) SymeX ==> http://symex.lantik.com
(*) WDBIL ==> http://wdbil.sourceforge.net
(*) Informate sobre LINUX en http://www.linux.org


Re: ON DELETE rule

От
Tom Lane
Дата:
"J.Fernando Moyano" <txinete@wanadoo.es> writes:
> I'm trying to do something like this:

> CREATE RULE piezas_delete AS
>     ON delete TO piezas
>     DO update materia_prima set usadas=(usadas-1)
>     where n_material=old.n_material;

> The rule is created. OK .... but the action doesn't run like it's supossed.

This will almost certainly not do what you intended, at least not for
cases in which a DELETE deletes multiple rows from piezas.  The rule
creates an additional query that will be run once for each DELETE query
against piezas.  You appear to be envisioning one firing per tuple
deleted.  I'd recommend doing the UPDATE inside a trigger instead.
That approach will operate in the way you envision.
        regards, tom lane