|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
[mysql] Transazione....
io dovrei fare una cosa del genere
Codice:
SELECT m.* FROM Messaggio m IF(m.DeleteMit=1 AND m.DeleteDes=1) THEN DELETE FROM m ELSE UPDATE m SET m.deleteMit = 1 ENDIF WHERE m.Id = ? Codice:
Messaggio m = new messaggio(IDMESSAGGIO)
if(m.deleteMit == 1 && m.deleteDes == 1){
CancellaMessaggio();
}else{
UpdateMessaggio();
}
__________________
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
ELIMINA CON LA WHERE E POI LANCI L'UPDATE CHE SE, SE E' STATO ELIMINATO IL RECORD CHE DOVREBBE AGGIORNARE SEMPLICEMENTE NON FA NIENTE ALTRIMENTI AGGIORNA
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
Codice:
SELECT m.* FROM Messaggio m IF(m.DeleteMit=1 AND m.DeleteDes=1) THEN DELETE FROM m WHERE m.Id = ? ELSE UPDATE m SET m.deleteMit = 1 WHERE m.Id = ? ENDIF
__________________
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Intendevo lanciarle separatamente
Codice:
DELETE FROM MESSAGGIO WHERE DELETEMIT=1 AND DELETEDES=1 WHERE ID=? Codice:
UPDATE MESSAGGIO SET DELETEMIT=1 WHERE ID= ?
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
Sei proprio un FURBACCHIONE... Guistissimo.. Ma questo se lo metto dentro una stessa query mi garantisce l'atomicità dell'operazione??
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Devi eseguirle separatamente una dopo l'altra
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Magari se mi spieghi con precisione il meccanismo con il quale gestisci gli update e le delete ti posso dare una soluzione piu elegante
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
SCUSAMI.... ma il problema è di nuovo presente..
Perchè io sono obbligato temporalmente prima a fare Codice:
UPDATE Messaggio SET DeleteMit=1 WHERE Id= ?; Codice:
UPDATE Messaggio SET DeleteDes=1 WHERE Id= ?;
__________________
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Allora un trigger che scatta dopo l'update e ti elimina nel caso ci siano le condizioni
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
Io nel Db devo avere solo messaggi con i campi deleteDes AND deleteMit != entrambi da 1..
se dopo un update si verifica che entrambi i campi sono ad 1 deve eseguira la DELETE.. Il problema che deve essere atomica...
__________________
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
Quote:
GRAZIE MILLE...
__________________
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Atomica?
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2002
Messaggi: 1024
|
Nel senso di transazione (rimasugli di c
__________________
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Secondome con un trigger fai piu bella figura
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In MySQL non tutti gli engine sono transazionali: InnoDB e NDS (per realizzare cluster) sicuramente (forse anche BerkeleyDB, ma al momento non ricordo).
Quindi per eseguire "atomicamente" quelle operazioni ti serve un db che sfrutti uno di quegli engine. Per il resto, potresti racchiuderle tutte in una stored procedure, che a partire da MySQL 5 sono supportate da MySQL (e idem per i trigger che, comunque, da soli NON risolvono certo il problema dell'atomicità dell'esecuzione delle operazioni).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:04.




















