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 关注
- 161 浏览
添加回答
举报