Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    PDO transazioni, stabilire le sentenze da includere, si pu� compromettere la transazione con un valore duplicato o un warning?

    Ciao a tutti,
    avro' la necessita' a breve di usare le transazioni con la classe PDO, premetto che non l'ho mai fatto in quanto non ne ho mai avuto bisogno.
    Prima di utilizzarle vorrei farvi delle domande, mi basterebbe come risposta un semplice si' o no, dal momento che poi le info me le cerchero' io, ringrazio anticipatamente chi mi rispondera'.

    1)Dal momento che ho una struttura MVC e la chiamata al DB avviene da varie CLASSI, le quali utilizzano TUTTE la stessa connessione, e' possibile stabilire quali operazioni andranno incluse nella transazioni e quali no?
    Per capirci:
    Faccio un:
    update(dovra' essere inclusa nella transazione)
    altro update (NON DOVRA' ESSERE incusa nella transazione)
    faccio un delete (dovra' essere inclusa nella transazione)
    In questo caso solo la prima e la terza sentenza dovranno essere incluse nella transazione.
    E' possibile?

    2)un warning, generato da una sentenza, puo' fare in modo che l'intera transazione non sia completata?

    3)Un valore duplicato genererebbe un errore nella transazione e tutte le altre operazioni verrebbero cancellate, giusto?

    Grazie,
    Roberto
    Ultima modifica di robynosse; 21-04-2018 a 11:50

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    1) Quando inizi una transazione sei dentro la transazione fino a quando non arrivi alla sua chiusura (commit o rollback), quindi anche se ad un certo punto chiami un metodo di una classe esterna che esegue una sua query, questa risulterà all'interno della transazione.
    Se invece intendi che un utente esegue un'operazione che richiede una transazione ed un secondo utente invece esegue un'operazione che non richiede una transazione, ma opera su una o più tabelle utilizzate anche dalla transazione del primo utente, allora stiamo parlando di concorrenza e va gestita con le lock, ovvero si blocca la lettura/scrittura o solo la scrittura (a seconda delle esigenze) sulle tabelle "critiche" e finché queste tabelle non vengono sbloccate, le nuove richieste di accesso restano in attesa.

    2) Qualsiasi problema, se non gestito tramite eccezioni, provoca il fallimento della transazione.

    3) Se il campo in questione è una chiave primaria o un campo unique, allora se non gestisci l'eccezione la transazione fallisce ed eseguirai il rollback, ovvero vengono annullati tutti i cambiamenti apportati dalle precedenti query interne alla transazione.
    Ultima modifica di Alhazred; 21-04-2018 a 12:34

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Perfetto, grazie!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.