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:
Al tentativo di marchiare il prodotto come eliminato, però, il database risponde così: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;
Qualcuno mi sa dire dove sbaglio e come rimediare?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.
Grazie mille!
Rupert

Rispondi quotando

