まず、括弧が1つ欠けていますが、この場合はまったく使用する必要がありません
クエリ文字列を
に変更しますInsert Into archived (select * from registrations WHERE id=$id)
^ ^
または単に
Insert Into archived select * from registrations WHERE id=$id
これが
次に、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);
これが