Mysql
 sql >> Base de données >  >> RDS >> Mysql

Déplacer des données d'une table MySQL à une autre

Tout d'abord, il vous manque une parenthèse, que vous n'avez pas du tout à utiliser dans ce cas

Remplacez votre chaîne de requête par

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

ou simplement

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

Voici SQLFiddle démo

Deuxièmement INSERT ne renvoie pas de jeu de résultats, vous ne devez donc pas utiliser mysql_fetch_array() .

Troisièmement, si votre intention était de bouger non seulement pour copier des données, vous devez également supprimer la ligne que vous avez copiée par la suite.

Maintenant, vous pouvez tout mettre dans une procédure stockée

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 ;

Exemple d'utilisation :

CALL move_to_archive(2);

Voici SQLFiddle démo