Mysql
 sql >> база данни >  >> RDS >> Mysql

Преместете данни от една MySQL таблица в друга

Първо пропускате една скоба, която изобщо не трябва да използвате в този случай

Променете низа на заявката си на

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

или просто към

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

Ето го SQLFiddle демонстрация

Второ INSERT не връща набор от резултати, така че не трябва да използвате mysql_fetch_array() .

Трето, ако намерението ви е било да се преместите не само за да копирате данни, тогава трябва също да изтриете реда, който сте копирали след това.

Сега можете да поставите всичко в съхранена процедура

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 ;

Примерна употреба:

CALL move_to_archive(2);

Ето го SQLFiddle демонстрация



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранявайте String Array в MySql чрез java?

  2. PHP формат date() при вмъкване в datetime в MySQL

  3. MS SQL, еквивалентен на MySQL потребителски дефинирани променливи в заявки

  4. КОНВЕРТИРАНЕ на MySQL заявка към SQL Server (MSSQL / SQLSRV) (С РАЗЛИЧНО)

  5. Достатъчен ли е mysqli_real_escape_string, за да се избегне SQL инжекция или други SQL атаки?