Gio Games
14-05-2009, 18:41
Salve a tutti ragazzi.
Ho un problema con i trigger in MySQL.
Innanzitutto ho un trigger definito in questo modo:
CREATE TRIGGER incrementa_articoli
AFTER INSERT ON articoli
FOR EACH ROW
UPDATE negozi
SET negozi.num_articoli = negozi.num_articoli + 1
WHERE nome = NEW.negozi;
Come è facile intuire questo trigger non fa altro che incrementare il numero di articoli di un negozio.
Ho una query cosìffatta:
INSERT INTO articoli (codice, peso, prezzo, nome, categorie, negozi, quantita)
VALUES ('$codice', '$peso', '$prezzo', '$nome', '$categorie', (SELECT nome FROM negozi WHERE utenti = '$commerciante'), '$quantita');
Al momento dell'esecuzione mi ritrovo un bel errore #1442:
Can't update table 'negozi' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Ho capito che il problema sta nella subquery, che si riferisce alla stessa tabella che il trigger deve aggiornare.
Ora la mia domanda è: esiste una soluzione a questo problema (a parte effettuare a parte la subquery ed inserire il valore costante) oppure no?
Grazie a tutti
Ho un problema con i trigger in MySQL.
Innanzitutto ho un trigger definito in questo modo:
CREATE TRIGGER incrementa_articoli
AFTER INSERT ON articoli
FOR EACH ROW
UPDATE negozi
SET negozi.num_articoli = negozi.num_articoli + 1
WHERE nome = NEW.negozi;
Come è facile intuire questo trigger non fa altro che incrementare il numero di articoli di un negozio.
Ho una query cosìffatta:
INSERT INTO articoli (codice, peso, prezzo, nome, categorie, negozi, quantita)
VALUES ('$codice', '$peso', '$prezzo', '$nome', '$categorie', (SELECT nome FROM negozi WHERE utenti = '$commerciante'), '$quantita');
Al momento dell'esecuzione mi ritrovo un bel errore #1442:
Can't update table 'negozi' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Ho capito che il problema sta nella subquery, che si riferisce alla stessa tabella che il trigger deve aggiornare.
Ora la mia domanda è: esiste una soluzione a questo problema (a parte effettuare a parte la subquery ed inserire il valore costante) oppure no?
Grazie a tutti