寫一個存儲過程,將一個數據表中的數據定時存入另一個表中,能夠進行實時更新表中的數據,如果表中沒有會直接插入新數據


CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_test`()
BEGIN
DECLARE chkc INT;
DECLARE id_tmp INT;
DECLARE age_tmp INT;
DECLARE name_tmp VARCHAR(32);
DECLARE flag INT DEFAULT TRUE;//定義一個flag設置為TRUE
DECLARE cur CURSOR FOR SELECT id FROM testname;//定義游標,以testname表中的id字段為游標進行循環遍歷
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = FALSE;//如果程序有未聲明的變量,flag變為FLASE循環遍歷中止
OPEN cur;//打開游標
REPEAT//循環遍歷
    FETCH cur INTO id_tmp;//將當前遍歷到的賦值給聲明的id_tmp變量
    SELECT COUNT(*) INTO chkc FROM testname_detail    WHERE id = id_tmp; 
    IF chkc = 1 THEN
    UPDATE testname_detail,testname    SET testname_detail.age = (SELECT age FROM testname WHERE id = id_tmp) WHERE testname_detail.id = id_tmp;
    ELSE
    SELECT age, name INTO age_tmp, name_tmp FROM testname WHERE id = id_tmp;
    INSERT INTO testname_detail(id,name,age) VALUES(id_tmp,name_tmp,age_tmp);
    END IF;
UNTIL flag = FALSE 
END REPEAT;
CLOSE cur;
END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM