我要找的,將採取行年長則X天,並把它放在歸檔表... 正想着,使功能,因此這將是easer執行功能。 ..如果我管理由自己來寫吧:)MySQL的功能:旋轉舊條目存檔表
回答
好吧,我定局寫的:) 我花了一段時間,但在這裏它是:
DELIMITER $$
DROP PROCEDURE IF EXISTS `procedure`.`rotate_events_pro`$$
CREATE DEFINER=`confiq`@`%` PROCEDURE `rotate_events_pro`(p_threshold_rotate_row int,p_days_to_keep int,OUT p_message VARCHAR(200))
BEGIN
DECLARE v_id_to_move INT;
#lets take ID that we need to move
#we can't use variables in LIMIT, how smart MySQL!
SET @v_sql = CONCAT('SELECT max(id)
INTO @v_id_to_move
FROM events
WHERE event_created < DATE_ADD(CURDATE(), INTERVAL - ',p_days_to_keep,' DAY) OR
id < (SELECT min(id) FROM (SELECT id FROM events ORDER BY id DESC LIMIT ?) as id)');
PREPARE stmt1 FROM @v_sql;
SET @param1 = p_threshold_rotate_row;
EXECUTE stmt1 USING @param1;
DEALLOCATE PREPARE stmt1;
#we have IDs that need to to be moved to arhive
IF @v_id_to_move > 0 THEN
START TRANSACTION;
INSERT INTO archived_events SELECT * FROM events WHERE id < @v_id_to_move;
INSERT INTO archived_eventsinfo SELECT * FROM eventsinfo WHERE event_id < @v_id_to_move;
DELETE FROM events WHERE id < @v_id_to_move;
DELETE FROM eventsinfo WHERE event_id < @v_id_to_move;
COMMIT;
SET p_message = CONCAT('moved all events that id is < ',@v_id_to_move);
ELSE
SET p_message = 'Nothing to move';
END IF;
END$$
DELIMITER ;
隨意反饋或編輯自己使用:)
使用觸發器代替像
CREATE TABLE archive_NUMBER_OF_WEEK (...);
INSERT INTO archive_NUMBER_OF_WEEK SELECT * FROM content WHERE DATE < X days;
DELETE * FROM content WHERE DATE < X days
將發佈。他們是爲了這些。
沒了......我更願意提出申請的cronjob會照顧老項目,而不是的觸發器。表是這樣的觸發器太活躍...... – confiq 2010-05-07 15:15:52
如果你想用一個動態後綴命名存檔表(例如我認爲你在NUMBER_OF_WEEK的例子中是暗示的),那麼我會建議在bash/perl/python中編寫一個腳本來執行此操作,而不是使用一個MySQL存儲例程。
此外,如果你正在使用MySQL 5.1,你可能要考慮按日期分區的內容表,所以你可以很容易地刪除舊的分區,他們歸檔後。
什麼你「按日期分區的內容表」意思? 任何關於這方面的文章? – confiq 2010-05-07 15:16:42
@confiq:這裏有基於範圍的分區MySQL手冊。第4和第5的例子是基於日期:http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html – 2010-05-07 16:09:25
- 1. 旋轉功能
- 2. Mysql存檔舊數據
- 3. 旋轉功能2008
- 4. 存檔表 - 舊副本
- 5. 使用旋轉功能
- 6. javascript旋轉翻譯功能
- 7. 旋轉功能未檢出
- 8. Java旋轉圖像功能
- 9. T-SQL旋轉功能
- 10. Mysql的更換並刪除舊條目
- 11. 存檔舊包
- 12. 存檔mysql 6個月的舊數據到其他表
- 13. MySql旋轉桌上的最後一個條目
- 14. CSS旋轉功能。如何指定旋轉的方向?
- 15. 我不能容納舊的條目
- 16. 保存功能中的舊參數
- 17. MYSQL加入兩個表並列出最舊的條目
- 18. 如何在mysql表中用新的覆蓋舊條目?
- 19. 瞭解Qt的QTransform旋轉功能
- 20. jQuery的旋轉木馬在功能
- 21. jQuery的滑塊旋轉功能
- 22. Xcode中的自動旋轉功能(ipad)
- 23. 旋轉matplotlib的填充功能,在圖
- 24. SQL Server 2008的旋轉功能
- 25. 二叉樹的旋轉功能
- 26. MySQL存儲功能
- 27. 將獨立旋轉應用於多個四邊形使用舊的OpenGL功能
- 28. 如何從Azure功能中刪除Azure表存儲條目?
- 29. MySQL的截斷存檔表
- 30. mysql:改變了功能,但保持舊功能
什麼是你的問題?你剛剛告訴我們你會寫這個函數,並在完成時呈現它嗎?如果是這樣的話,這對SO來說不是一個有效的問題。 – 2010-04-13 08:22:35
問題是,我不知道如果我能寫這樣的事...... 會嘗試後... – confiq 2010-04-13 08:25:46