Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MYSQL] Rollback e unione campi...

    Ciao a tutti. Ho due problemi.

    1) Ho fatto un update su una tabella ma mi sono reso conto di aver commesso un errore e ho perso dei dati. C’è un modo per tornare indietro e ripristinare lo stato precedente? Pensavo di riuscirci facendo ROLLBACK, ma a quanto ho capito, funziona solo in un blocco transazionale.

    2) Ho una tabella tab1 con due campi desc e desc1 di tipo varchar e vorrei fare in modo di unire il contenuto dei due campi e metterlo in desc. In poche parole vorrei che desc = desc + desc1. Pensavo di fare così:
    Codice PHP:
    UPDATE tab1 SET desc=desc desc1 
    ma non ha funzionato e anzi mi ha azzerato il campo desc (da cui il problema numero 1).

    Grazie mille e spero che mi possiate aiutare.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    1) Non puoi, visto che non hai attivato il TRANSACTION

    2) Devi usare la CONCAT http://dev.mysql.com/doc/refman/5.0/...unction_concat

    Codice PHP:
    update tabella 
    set 
    desc
    =CONCAT(desc,'--'desc1); 
    oppure se vuoi inserire tutto attaccato

    Codice PHP:
    update tabella 
    set 
    desc
    =CONCAT(descdesc1); 
    Ti consiglio, prima di eseguire delle update di cui non sei sicuro, sopratutto se non puoi fare il rollback, di mettere sempre una condizione di where che ti permetta di fare la modifica solo su un record.

  3. #3
    Ti ringrazio per la risposta molto efficiente.
    Per fortuna che per il primo punto possedevo il file di importazione.

    Quindi supponiamo che io faccia un UPDATE all'interno di una TRANSACTION e dopa un quarto d'ora mi accorgo di aver sbagliato. A questo punto, per tornare allo stato precedente sarebbe sufficiente fare una ROLLBACK? E se no, c'è qualche comando del dbms che permetta di recuperare lo stato precedente?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da aironeangelo77
    Ti ringrazio per la risposta molto efficiente.
    Per fortuna che per il primo punto possedevo il file di importazione.

    Quindi supponiamo che io faccia un UPDATE all'interno di una TRANSACTION e dopa un quarto d'ora mi accorgo di aver sbagliato. A questo punto, per tornare allo stato precedente sarebbe sufficiente fare una ROLLBACK? E se no, c'è qualche comando del dbms che permetta di recuperare lo stato precedente?
    Non capisco che c'entra il tempo.
    L'importante e' che tu non esegua il "commit".

    Ah, mi ero dimenticato di dirti, che dipende dal motore che usi nel creare la tabelle, anche se immagino che sia MyISAM.

    La pagina del manuale ufficiale, ti toglie qualsiasi dubbio.

    http://dev.mysql.com/doc/refman/5.0/...nsactions.html

    ps. prima ho scritto di fare delle prove su un record di appoggio o temporaneo... beh...meglio, nel caso non ti sentissi sicuro, usare direttamente una tabella temporanea, con due/tre campi magari sia varchar che integer.

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.