Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Copiare un dato da una tabella ad un'altra e cancellarlo

    Salve ragazzi,
    ecco il quesito. Vorrei copiare determinati dati da una tabella ad un'altra. Ad esempio da tabella 1 a tabella 2. Ma nel momento in cui vengono copiate, vorrei che nella tabella 1 vengano cancellati.

    Per copiare potrei fare cosi:

    INSERT INTO tabella 2 SELECT * FROM tabella 1 WHERE id=$id

    ma se volessi anche cancellare il dato dalla tabella 1??

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Si può inserire un DELETE nella query che ho postato?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Nessun suggerimento?

  4. #4
    Originariamente inviato da marckhh
    Si può inserire un DELETE nella query che ho postato?
    la soluzione è quella!

    esegui 2 query con la prima copi il dato e con la seconda lo cancelli dalla vecchia tabella...

    non capisco quale sia il tuo problema!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    56
    ciao,

    Non puoi fare quello che ti proponi con un singolo comando SQL,
    devi prima fare la INSERT e poi la DELETE.

    L'unica cosa che devi valutare e' se eseguire i due comandi in una unica "transazione", ovvero o vanno a buon fine entrambi i comandi oppure il db torna come prima.
    Ti andrebbe bene se la INSERT si completa correttamente e la DELETE no?

    G

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Beh no, diciamo che le due cose dovrebbero andare di pari passo. Il discorso è questo. Un utente effettua un ordine. L'ordine viene inserito in una tabella chiamata "pagamenti". Una volta effettuato il pagamento, l'ordine passa ad una tabella "archivio" e cancellato da pagamenti.

    Ecco, questo è quello che devo ottenere

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    56
    start transaction;
    insert into ...
    delete from ...
    commit;
    SET AUTOCOMMIT=1;

    Il comando "set autocommit" serve solo per riportare il comportamento di MYSQL al default, ovvero dopo ogni comando viene fatto il commit in automatico.
    Mi sembra che si puo' utilizzare START TRANSACTION solo se utilizzi innodb.

    G

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Jot,
    grazie per il suggerimento. Ma perdona la mia ignoranza. Sino ad ora non avevo mai sentito parlare di "start transaction;" e "SET AUTOCOMMIT=1;"

    Non saprei proprio in che parte del file php inserirli. E come poi??

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    56
    errata corrige sulla "set autocommit", rileggendo il manuale.... non e' necessaria.

    Per la sessione che sottomette il comando di START TRANSACTION,
    tutte le modifiche apportate al database dal momento della esecuzuione del comando stesso
    diventeranno effettive solo se un comando di commit sara' eseguito.
    Percio' devi semplicemente scrivere il codice cosi come l'esempio...

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

    G

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ma perchè scrivendo queste righe

    $dati = mysql_query("INSERT INTO archiviorder SELECT * FROM ordini WHERE ordine_id='".$ordine_id."'");
    $query = mysql_query("DELETE * FROM ordini WHERE ordine_id='".$ordine_id."'");

    mi esegue la prima query ma non la seconda? (quindi la DELETE)???

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.