Ciao a tutti e grazie per la pazienza da subito.
Ho una tabella in cui ho elencato alcuni prodotti ripartiti secondo la tipologia dal campo
'id_tipo di prodotto' e un campo 'ordine' che contiene appunto l'ordine con cui
voglio appaiano nei listini.
Di tanto in tanto alcuni prodotti vengono eliminati dal listino. Nella tabella ho quindi inserito un
campo 'eliminato' che marchia questi prodotti col valore '0' (prodotto a listino) oppure '1' (prodotto fuori listino).
Io vorrei fare in modo che quando cambio il valore del campo 'eliminato' da '0' a '1', tutti i
prodotti successivi di quel determinato tipo salissero di una posizione nel campo 'ordine'. Ho quindi creato questo trigger:
Codice PHP:
CREATE TRIGGER "database_listino"."correggi_ordine" AFTER UPDATE ON "database_listino"."prodotti"
FOR EACH ROW BEGIN
IF new.eliminato='1' THEN
UPDATE prodotti SET ordine = ordine - 1
WHERE (id_tipo_prodotto=OLD.id_tipo_prodotto AND ordine>OLD.ordine) ORDER BY ordine;
end if;
END;
Al tentativo di marchiare il prodotto come eliminato, però, il database risponde così:
Errore query SQL # 1442 Can't update table 'prodotti' in stored function/trigger
because it is already used by statement which invoked this stored function/trigger.
Qualcuno mi sa dire dove sbaglio e come rimediare?
Grazie mille!
Rupert