442 messaggi dal 09 marzo 2006
Ciao.
Vorrei creare un trigger che inserisce il record di cui faccio il replace in mysql se e solo se cambia la colonna prezzo tra il vecchio record e il nuovo.
Adesso uso la clausola replace per inserire i nuovi record in modo che se il record c è gia lo cancella e lo reinserisce.solo che con il replace non riesco ad avere il vecchio record perché È solo nel ondelete e non nell insert(intendo gli eventi dei trigger)
Come posso fare nel modo piu performante possibile?
Mi sa tanto che l uso del replace sia sbagliato sotto tutti i punti di vista
497 messaggi dal 08 febbraio 2009
Ciao.

Purtroppo l'operazione "REPLACE" non ha un trigger tutto suo, quindi scatena due trigger:
- quello sulla delete
- quello sulla insert

Pertanto non c'è modo di fare quanto chiedi, salvo salvarsi da qualche parte i dati nel trigger della delete e poi riutilizzarli nella insert (tabelle temporanee?).
Fatto così però credo sia molto complicato da realizzare.


Anzichè usare la replace, se hai bisogno di così tanto controllo, non ti conviene usare una stored procedure?
In pratica ti fai dare i parametri che devi aggiornare, quindi nella procedure:
- Leggi il vecchio record
- Se c'è ti salvi i valori che devi salvarti e quindi fai l'update
- Se non c'è, azzeri le variabili di salvataggio e fai la insert
- Al termine dell'operazione, se non hai avuto errori, puoi aggiornare tutto quello che vuoi


Ovviamente così facendo tali operazioni vengono fatte solo se passi dalla stored procedure...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.