Mysql
 sql >> Database >  >> RDS >> Mysql

Sposta i dati da una tabella MySQL all'altra

Innanzitutto ti manca una parentesi, che non devi assolutamente usare in questo caso

Modifica la stringa di query in

Insert Into archived (select * from registrations WHERE id=$id)
                     ^                                        ^

o semplicemente

Insert Into archived select * from registrations WHERE id=$id

Ecco SQLFiddle demo

In secondo luogo INSERT non restituisce un set di risultati quindi non dovresti usare mysql_fetch_array() .

In terzo luogo, se il tuo intento era quello di trasferirti non solo per copiare i dati, devi anche eliminare la riga che hai copiato in seguito.

Ora puoi mettere tutto in una stored procedure

DELIMITER $$
CREATE PROCEDURE move_to_archive(IN _id INT)
BEGIN
    START TRANSACTION;
    INSERT INTO archived 
    SELECT * 
      FROM registrations 
     WHERE id = _id;
    DELETE
      FROM registrations 
     WHERE id = _id;
    COMMIT;
END$$
DELIMITER ;

Esempio di utilizzo:

CALL move_to_archive(2);

Ecco SQLFiddle demo