sql >> Base de Datos >  >> RDS >> Mysql

Mover datos de una tabla MySQL a otra

En primer lugar, te falta un paréntesis, que no tienes que usar en este caso

Cambie su cadena de consulta a

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

o simplemente

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

Aquí está SQLFiddle demostración

En segundo lugar INSERT no devuelve un conjunto de resultados, por lo que no debe usar mysql_fetch_array() .

En tercer lugar, si su intención era mover no solo para copiar datos, sino que también debe eliminar la fila que copió después.

Ahora puede ponerlo todo en un procedimiento almacenado

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 ;

Ejemplo de uso:

CALL move_to_archive(2);

Aquí está SQLFiddle demostración