[Db] mysql spostare record tra due tabelle

Cristiano Verondini cristiano a verondini.it
Mer 13 Giu 2007 19:09:42 CEST


> La prima idea era di dividere il lavoro in due query separate la
> prima che copia i record nello storico:
>
> "INSERT INTO storico_ordini (ordine_id,data,id_anacf,numero)
> SELECT ordine_id,data,id_anacf,numero
> FROM ordini"
>
> E la seconda che svuota la tabella ordini:
>
> "truncate teste_ordini"
>
> Ma preferirei fare tutto con un'unica query per evitare di dover fare
> troppi controlli Es. se un record non viene copiato nella tabella
> storico per qualsivoglia motivo e io ho svuotato la tabella ordini ho
> perso quel record.

    Purtroppo, AFAIK, questo è l'unico metodo. Aggiungerei un LOCK delle 
tabelle prima delle operazioni per evitare che mentre stai facendo la copia 
vengano inseriti altri record. Se non ci sono errori, la procedura non ha 
problemi. Se ci sono errori sarebbe meglio avere un motore DB col rollback.

    Se non hai troppi record ed hai paura di creare casini, puoi sempre 
procedere record per record. Il DB probabilmente ti ucciderebbe, ma a 
livello applicativo hai sotto controllo l'intero processo.

        Cris

-- 
Cristiano Verondini
http://www.verondini.it  ---   [ICQ: 114 190] 



Maggiori informazioni sulla lista Db