1 回答

TA貢獻1779條經驗 獲得超6個贊
您可以創建自己的偽臨時表,多個進程和連接可以訪問這些表。
這個想法是簡單地創建內存表,運行你的操作,然后清理。
可以用下面的sql創建內存表;
CREATE TABLE mydb.temp_32rfd293 (
id int(11) auto_increment,
content varchar(50),
PRIMARY KEY (`id`)
) ENGINE=MEMORY;
做一些有用的事情,然后使用;
DROP TABLE temp_32rfd293:
刪除 1 天前的 mydb.temp_% 表的預定事件
您需要清理偶爾被遺棄的臨時表,您可以在 mysql 中創建一個計劃事件來執行此操作。如果您選擇這樣做,請考慮對臨時表使用專用架構以防止意外刪除。
注意:您需要event_scheduler=ON在 my.ini 中進行此操作。
DELIMITER $$
CREATE
EVENT `cleanup_custom_temps`
ON SCHEDULE EVERY 1 DAY STARTS '2000-01-01 01:00:00'
DO BEGIN
---------------------------------------------------
-- Process to delete all tables with
-- prefix 'temp_', and older than 1 day
SET @tbls = (
SELECT GROUP_CONCAT(TABLE_NAME)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME LIKE 'temp_%'
AND CREATE_TIME < NOW() - INTERVAL 1 DAY
);
SET @delStmt = CONCAT('DROP TABLE ', @tbls);
PREPARE stmt FROM @delStmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
---------------------------------------------------
END */$$
DELIMITER ;
- 1 回答
- 0 關注
- 186 瀏覽
添加回答
舉報