PDA

View Full Version : [MYSQL] Verificare blocco record


rizzotti91
23-11-2012, 00:10
Ciao a tutti, sto usando una query del genere:

START TRANSACTION; SELECT * FROM Fornitori WHERE Codice=37 LIMIT 1 FOR UPDATE;

Con il risultato che fin quando non eseguo "COMMIT" è impossibile modificare o cancellare quel determinato record.

La mia domanda è: c'è qualche query che mi consente di sapere se un determinato record è bloccato dal "FOR UPDATE" in modo da far comparire un messaggio?

rizzotti91
23-11-2012, 09:26
UP!

rizzotti91
24-11-2012, 08:43
UP!

AllerITA
24-11-2012, 08:54
Dirò una cavolata, ma non puoi chiamare la select per memorizzare le chiavi dei record che poi devi aggiornare per sapere quali record stai aggiornando?
Poi se per te è troppo laborioso o non e' possibile puoi pure ignorare l'indicazione:D

rizzotti91
24-11-2012, 13:26
Ciao il problema non è riuscire a bloccare il record, ma riuscire a capire se un record è stato bloccato in modo da mostrare un messaggio ed interrompere le operazioni di modifica..

AllerITA
24-11-2012, 14:38
Scusami non avevo capito. Allora non so come aiutarti.
EDIT errore ho scritto una cavolata

rizzotti91
24-11-2012, 15:04
Non ti preoccupare... purtroppo per me, è troppo importante riuscire a capire se c'è un record che sia bloccato o meno da una transazione o altro, peccato che sembra che su tutta Internet non ci sia nulla al riguardo... o sono il programmatore migliore del mondo (e ne dubito profondamente), o la maggior parte programma a cavalo :boh: :asd:

skyline90
01-12-2012, 13:48
metodo casalingo XD non ho mai usato questa funzione e non sapevo nemmeno che si potevano bloccare le query per la modifica...

PRIMA del blocco (credo che blocchi tramite PHP(?)) aggiorni la query (inserendo uno spazio nel db) tipo "bloccato".... e modifichi il contenuto...

un if su bloccato e se è SI allora è bloccato se è NO allora è sbloccato...

dovrebbe andare no?

rizzotti91
01-12-2012, 14:01
metodo casalingo XD non ho mai usato questa funzione e non sapevo nemmeno che si potevano bloccare le query per la modifica...

PRIMA del blocco (credo che blocchi tramite PHP(?)) aggiorni la query (inserendo uno spazio nel db) tipo "bloccato".... e modifichi il contenuto...

un if su bloccato e se è SI allora è bloccato se è NO allora è sbloccato...

dovrebbe andare no?

E se il pc che "blocca" il record viene spento o viene chiuso il programma, chi si occuperà di rimuovere quel valore nel campo "bloccato"?

skyline90
01-12-2012, 14:20
E se il pc che "blocca" il record viene spento o viene chiuso il programma, chi si occuperà di rimuovere quel valore nel campo "bloccato"?

mmmhhh.... jquery con un timer? tipo sono nella pagina di modifica e c'è un jquery che aggiorna il "blocca" ogni 30 secondi se io chiudo la pagina il blocca rimane su SI però il timer non si aggiorna (dovresti mettere un altro field nel db con il time) faccio un check che se il timer è più alto di 60 secondi allora se ne sbatte del blocca e te lo sblocca.

non so se hai capito... non ho mai usato la funzione se mi dici come si chiama o un link a qualche codice ufficiale posso darci una sbirciatina che sarebbe utile in futuro =)

EDIT: oppure puoi usare solo un time e fai il controllo solo su quello.