Effetti SQL Update

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Effetti SQL Update

    Tramite phpmyadmin ho provato come si comporta una query dove chiedo di 'modificare' un campo di un record
    impostando il valore che è già presente nel db : il record NON viene cambiato (ovviamente) e il Rowcount è uguale a zero.
    Aggiungo che nel record è presente anche un campo timestamp con aggiornamento automatico e ovviamente anche questo campo NON viene modificato.

    Se aggiorno ad un valore diverso da quello presente nel db avviene l'aggiornamento e il Rowcount viene impostato a 1.

    Erroneamente avrei detto che anche in presenza di valori uguali sarebbe comunque avvenuto l'aggiornamento del timestamp e del rowcount (dando per scontato che l'operazione di update venisse eseguita a prescindere).

    Per la cronaca, test eseguito utilizzando : mariadb 10.2.25 e phpmyadmin 4.9.1
    Anche se ho usato mariadb tendo a pensare che il comportamento sia lo stesso con mySQL .....
  • Re: Effetti SQL Update

    E nel caso di modifica di due campi di cui uno solo con valore uguale al precedente?

    Comunque sì il comportamento è diverso da quello di sql server...
  • Re: Effetti SQL Update

    oregon ha scritto:


    E nel caso di modifica di due campi di cui uno solo con valore uguale al precedente?

    Comunque sì il comportamento è diverso da quello di sql server...
    Viene regolarmente aggiornato il campo con valore diverso e il rowcount diventa 1 come è lecito aspettarsi.

    Sebbene ragionevole, risulta spiazzante che la volontà di effettuare un update (a prescindere dall'uguaglianza del valore dei campi) sia subordinata alla presenta di (almeno) 1 campo con valori diversi dal record presente nel db.
    Mi riservo comunque di effettuare un test direttamente con l'interfaccia mysql da linea di comando (giusto per escludere che phpmyadmin ci metta del suo) .....
  • Re: Effetti SQL Update

    
    MariaDB [Prova_Rdp]> select * from Unita_Misura;
    +-------+--------------+-----------+---------------+------------+---------------------+---------------+---------------------+
    | Id_UM | Unita_Misura | Gruppo_UM | ISRT_Progress | Utente_INS | Data_INS            | Utente_REPL   | Data_REPL           |
    +-------+--------------+-----------+---------------+------------+---------------------+---------------+---------------------+
    |     1 | prova        | xx        |             1 | max        | 2019-11-06 18:01:53 | max@localhost | 2019-11-06 18:01:53 |
    +-------+--------------+-----------+---------------+------------+---------------------+---------------+---------------------+
    1 row in set (0,00 sec)
    
    MariaDB [Prova_Rdp]> UPDATE `Unita_Misura` SET `Gruppo_UM` = 'xx' WHERE `Unita_Misura`.`Id_UM` = 1;
    Query OK, 0 rows affected (0,00 sec)
    Rows matched: 1  Changed: 0  Warnings: 0
    
    MariaDB [Prova_Rdp]> UPDATE `Unita_Misura` SET `Gruppo_UM` = 'xy' WHERE `Unita_Misura`.`Id_UM` = 1;
    Query OK, 1 row affected (0,01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    
    La prima update trova il record ma NON effettua l'aggiornamento (valore da aggiornare uguale a valore del db)
    La seconda update aggiorna il record (e il rowchanged)
  • Re: Effetti SQL Update

    oregon ha scritto:


    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
    Mysqli per la precisione
Devi accedere o registrarti per scrivere nel forum
19 risposte