21/01/2009 alle 16:55:00
0 Commentimysql

Duplicare i record di una tabella SQL

Può essere utile a volte duplicare il contenuto di una riga di una tabella, integralmente o modificando i dati di alcuni campi.

 Se vogliamo copiare integralmente tutti i dati presenti nel record dovremo scrivere:

INSERT INTO tabella SELECT * FROM tabella WHERE id_tabella = 'x';

Il problema facendo così è che verrà duplicata anche la chiave primaria, se presente, e avremo un errore. Per ovviare a questo problema è sufficiente indicare quali campi vogliamo duplicare:

INSERT INTO tabella (campo_1, campo_2) SELECT campo_1, campo_2 FROM tabella WHERE id_tabella = 'x';

Se invece vogliamo duplicare alcuni campi e cambiarne altri, ad esempio mettere un nuovo valore al posto del "campo_1" basterà scrivere:

INSERT INTO tabella (campo_1, campo_2) SELECT 'Nuovo valore', campo_2 FROM tabella WHERE id_tabella = 'x';

Tutti i record che soddisfano la clausola WHERE vengono duplicati.

Commenti

    Non ci sono commenti