Reputation: 817
I got a error like "Unknown table 'matched_temp'" when execute the following stored procedure.
DELIMITER $$
DROP PROCEDURE IF EXISTS `apms`.`sp_partition_parkinout` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_partition_parkinout`()
BEGIN
DROP TEMPORARY TABLE IF EXISTS MATCHED_TEMP;
CREATE TEMPORARY TABLE MATCHED_TEMP AS
SELECT ID FROM CARDINOUT
WHERE (`State` = 2) AND
(ID NOT IN (SELECT ID FROM CARDINOUT_MATCHED))
LIMIT 200;
INSERT INTO CARDINOUT_MATCHED
SELECT * FROM CARDINOUT
WHERE ID IN (SELECT ID FROM MATCHED_TEMP);
DELETE FROM CARDINOUT
WHERE ID IN (SELECT ID FROM MATCHED_TEMP);
END $$
DELIMITER ;
I want to execute it periodically to move data from cardinout into cardinout_matched. The purpose to keep table cardinout as small as possible because cardinout is queried quite often.
Is there any other option to accomplish this?
Thanks Botem
Upvotes: 1
Views: 137
Reputation: 71939
CREATE TEMPORARY TABLE MATCHED_TEMP (
ID INT
);
INSERT INTO MATCHED_TEMP
SELECT ID FROM CARDINOUT
(...)
Upvotes: 1