Visualizzazione dei risultati da 1 a 4 su 4

Discussione: INNODB e transazioni?

  1. #1

    INNODB e transazioni?

    Buona sera,premetto che ho letto un po di Post relativi all'Innodb e alle transazioni.Avevo un versione che non mi consentiva di usare le InnoDB cosi ho scaricato la V.4.1.9 l'ho istallata e funziona,fino qui tutto ok..Adesso vorrei sapere come si fa a gestire le transazioni..Nel senso che, le gestisce direttamente questa particolare tabella(InnoDb) oppure devo usare anche uno script SQL che mi permetta, insieme alla INNODB di ovviare al problema delle transazioni?
    Potreste aiutarmi cortesemente?
    Grazie mille....

  2. #2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    grazie per avermi risposto, però questa pillola di mchorney l'ho scaricata... ho visitato anche i links,ma non ho saputo districarmi nella valanga di informazioni.
    Ti chiedo cortesemente un'esempio lato SQL di come gestire le transazioni perchè al momento questo esempio non mi è chiaro:
    codice:
    BEGIN; 
    SELECT Qta FROM Prodotti WHERE IdProdotto=123; 
    UPDATE Prodotti SET Qta=Qta-3 WHERE IdProdotto=123; 
    //A questo punto A decide di controllare quanti articoli con IdProdotto=123 sono presenti con una select 
    SELECT Qta FROM Prodotti WHERE IdProdotto=123; 
    A questo punto anche B vuole fare il suo ordine e fa una select per controllare che la quantità di merce di cui necessita sia disponibile: 
    
    SELECT Qta FROM Prodotti WHERE IdProdotto=123; 
    Se a questo punto B decidesse di fare la seguente update per rendere effettivo il suo ordine: 
    
    UPDATE Prodotti SET Qta=Qta-8 WHERE IdProdotto=123 (3) 
    
    Questa (B) verrebbe immediatamente sospesa perché il record in questione è bloccato (A sta eseguendo la transazione avviata col comando BEGIN). Il meccanismo di lock sul record si chiama row level locking. 
    
    Quindi B deve attendere che il record sia sbloccato e questo avviene quando A invia il comando COMMIT che provoca la scrittura dei dati nel db. 
    
    A questo punto B può eseguire la query (3) che era stata messa in standby. 
    Infatti se ora facciamo: 
    
    SELECT Qta FROM Prodotti WHERE IdProdotto=123; 
    
    Ci verrà ritornato 7 e non più -1.
    In pratica l'inizio della gestione di una transazione è il BEGIN e alla fine di tutte le operazioni SQL dovrei inserire COMMIT?

    Grazie per la risposta

  4. #4
    potreste aiutarmi per favore?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.