Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Duplicare/Copiare un record con MySQL

Articolo scritto da Max Bossi

In determinate circostanze può capitare di avere la necessità, all'interno di una web-application o nella semplice gestione dei dati presenti nel nostro database MySQL aziendale, di effettuare copie di interi record o di loro porzioni.

Facciamo un esempio. Poniamo di dover gestire il database di un sito di e-commerce e di avere la necessità di copiare una scheda prodotto per inserirne uno nuovo con le medesime caratteristiche di uno già presente. Si supponga, per fare un esempio concreto, di dover inserire come prodotto del nostro ipotetico store di elettronica il prodotto "IPod Nano 16Gb" nel colore "Argento" avente scheda di prodotto identica al già disponibile "IPod Nano 16Gb" di colore "Bianco".

(L'articolo continua più sotto...)

Si supponga che i prodotti della famiglia IPod siano classificati all'interno della tabella lettori_mp3 così strutturata:

Supponiamo che il prodotto da copiare ("IPod Nano 16Gb" di colore "Bianco") abbia ID 123.

Per effettuare la copia del record useremo questa query:

INSERT INTO lettori_mp3 
SELECT * FROM lettori_mp3 WHERE id = 123;
In questo modo andiamo a creare un record uguale e dovremo solo modificare i campi "ID" e "colore" specificando manualmente i valori per il nuovo record.

Si noti, tuttavia, che se il campo ID della nostra tabella è stato impostato come valore numerico univoco con auto_increment la query vista sopra restituirà un errore (in quanto non è possibile avere due identificativi uguali!!!). In questo caso avremmo dovuto selezionare i campi da copiare escludendo il campo ID:

INSERT INTO lettori_mp3 (marca, modello, descrizione, colore, prezzo)
SELECT marca, modello, descrizione, 'Argento', prezzo FROM lettori_mp3 WHERE id = 123;
Come potete vedere abbiamo copiato tutti i campi del record tranne il campo "ID" (per il motivo visto sopra).
Avrete notato, inoltre, che nella SELECT abbiamo sostituito al campo "colore" (nel record originale il colore è "Bianco") il valore da inserire nel nuovo record ("Argento").

Et voilà. Il gioco è fatto.
Non ci resta che fare una bella SELECT sulla nostra tabella per vedere se il nuovo record è stato inserito correttamente.

E' appena il caso di sottolineare, infine, che è possibile effettuare copie totali o parziali di record anche su tabelle diverse (è sufficiente specificare i giusti nomi dei campi da copiare ed assicurarsi che questi accettino i medesimi tipi di dati).

Corsi
Corso MS AccessCorso MS Access
Impara a creare e gestire database in maniera semplice e veloce. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso SQL e DatabaseCorso SQL e Database
Creazione e gestione di database relazionali. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122