sql >> Database >  >> RDS >> Mysql

Gegevens van de ene MySQL-tabel naar de andere verplaatsen

Ten eerste mis je een haakje, dat je in dit geval helemaal niet hoeft te gebruiken

Wijzig uw zoekopdracht in

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

of om gewoon

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

Hier is SQLFiddle demo

Ten tweede INSERT retourneert geen resultatenset, dus u moet mysql_fetch_array() niet gebruiken .

Ten derde als het uw bedoeling was om te verhuizen niet alleen om gegevens te kopiëren, moet u ook de rij verwijderen die u daarna hebt gekopieerd.

Nu kunt u alles in een opgeslagen procedure plaatsen

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 ;

Voorbeeldgebruik:

CALL move_to_archive(2);

Hier is SQLFiddle demo



  1. python models.py syncdb werkt niet

  2. Ontvang berichten uit alle categorieën behalve één categorie

  3. MySQL cartesiaans product tussen twee SELECT-instructies

  4. Is er een manier om meer dan één query per string uit te voeren in MySQL-Python?