Effetti SQL Update

di Anonimizzato22921 il
19 risposte
Salve,
c'è un modo per capire se un SQL Update appena eseguito ha effettivamente portato delle modifiche o se i valori erano uguali?

Se non è chiaro faccio un esempio.

19 Risposte

  • Supponi di voler dipingere una parete di bianco: come faresti per sapere se l'hai effettivamente dipinta e di che colore?

    1) un update NON viene eseguito SOLO se viene generato un errore.
    2) SE ci sono delle differenze tra il contenuto del record PRIMA dell'update e DOPO
  • migliorabile ha scritto:


    Supponi di voler dipingere una parete di bianco: come faresti per sapere se l'hai effettivamente dipinta e di che colore?

    1) un update NON viene eseguito SOLO se viene generato un errore.
    2) SE ci sono delle differenze tra il contenuto del record PRIMA dell'update e DOPO
    Quindi è come immaginavo..?
    Si è costretti a fare una SELECT?
  • Ciao,

    non ho capito se vuoi simulare un UPDATE per vedere quanti record saranno modificati, oppure sapere quante righe sono state modificate dopo l'UPDATE.

    Nel primo caso puoi farlo da phpMyAdmin, inserisci la query nella tab "SQL" e clicchi sul pulsante "Simula query".

    Ad ogni modo, dopo aver eseguito la query, ti viene ritornato il numero di righe coinvolte (rows affected).

    In PHP puoi ugualmente farti tornare questo valore.
  • flaviors200 ha scritto:


    Ciao,

    non ho capito se vuoi simulare un UPDATE per vedere quanti record saranno modificati, oppure sapere quante righe sono state modificate dopo l'UPDATE.

    Nel primo caso puoi farlo da phpMyAdmin, inserisci la query nella tab "SQL" e clicchi sul pulsante "Simula query".

    Ad ogni modo, dopo aver eseguito la query, ti viene ritornato il numero di righe coinvolte (rows affected).

    In PHP puoi ugualmente farti tornare questo valore.
    La seconda.. mysqli_affected_rows dovrebbe risolvere tutti i miei problemi
    Grazie!
  • Non è proprio quello che avevi chiesto...
  • oregon ha scritto:


    Non è proprio quello che avevi chiesto...
    A me sembra piuttosto comprensibile già dal primo messaggio invece, comunque sia avevo anche scritto che eventualmente avrei spiegato meglio con degli esempi se non era chiara la richiesta
  • L'update avviene anche se i valori dei campi erano uguali e ti viene restituito il conteggio delle righe aggiornate. È quello che vuoi? Dal primo post che hai scritto non sembra...
  • oregon ha scritto:


    L'update avviene anche se i valori dei campi erano uguali e ti viene restituito il conteggio delle righe aggiornate. È quello che vuoi? Dal primo post che hai scritto non sembra...
    Quindi anche se i campi erano uguali risulteranno le righe come modificate?
  • Esatto. Capito adesso?
  • LuigiMdg ha scritto:


    oregon ha scritto:


    L'update avviene anche se i valori dei campi erano uguali e ti viene restituito il conteggio delle righe aggiornate. È quello che vuoi? Dal primo post che hai scritto non sembra...
    Quindi anche se i campi erano uguali risulteranno le righe come modificate?
    Ma anche no... se il valore del campo che si vuole modificare non cambia, il numero di righe modificate è uguale a zero.
  • flaviors200 ha scritto:


    Ma anche no... se il valore del campo che si vuole modificare non cambia, il numero di righe modificate è uguale a zero.
    Pardon ... non parlavo specificatamente di quella funzione mysql ma in generale.

    Ad esempio con SQL Server, se hai due campi in cui uno cambia valore e l'altro no, hai 1 riga modificata e anche se cambi due campi con valori uguali ai precedenti, hai 1 riga modificata.

    Non so come si comporti quella funzione con aggiornamenti parziali della riga e se è quello che serve a chi ha fatto la domanda.
  • oregon ha scritto:


    flaviors200 ha scritto:


    Ma anche no... se il valore del campo che si vuole modificare non cambia, il numero di righe modificate è uguale a zero.
    Pardon ... non parlavo specificatamente di quella funzione mysql ma in generale.

    Ad esempio con SQL Server, se hai due campi in cui uno cambia valore e l'altro no, hai 1 riga modificata e anche se cambi due campi con valori uguali ai precedenti, hai 1 riga modificata.

    Non so come si comporti quella funzione con aggiornamenti parziali della riga e se è quello che serve a chi ha fatto la domanda.
    Strano, forse dipende dall'implementazione del DBMS.
  • oregon ha scritto:


    flaviors200 ha scritto:


    Ma anche no... se il valore del campo che si vuole modificare non cambia, il numero di righe modificate è uguale a zero.
    Pardon ... non parlavo specificatamente di quella funzione mysql ma in generale.

    Ad esempio con SQL Server, se hai due campi in cui uno cambia valore e l'altro no, hai 1 riga modificata e anche se cambi due campi con valori uguali ai precedenti, hai 1 riga modificata.

    Non so come si comporti quella funzione con aggiornamenti parziali della riga e se è quello che serve a chi ha fatto la domanda.
    E a me serve proprio così.. Che anche se viene modificato soltanto un campo deve risultarmi una riga come modificata.. Ed in effetti è così
  • LuigiMdg ha scritto:


    E a me serve proprio così.. Che anche se viene modificato soltanto un campo deve risultarmi una riga come modificata.. Ed in effetti è così
    Ma tu usi mysql o altro? Ancora non si è capito.

    Se usi mysql non so se come si comporti quella funzione nel caso che hai indicato tu. Sicuramente SQL Server (con la ROWCOUNT) restituirebbe comunque 1
Devi accedere o registrarti per scrivere nel forum
19 risposte