您可以創建自己的僞臨時表,可以通過多個進程和連接來訪問它們。
這個想法是簡單地創建內存表,運行你的操作,然後清理。
您可以使用以下sql創建一個內存表;
CREATE TABLE mydb.temp_32rfd293 (
id int(11) auto_increment,
content varchar(50),
PRIMARY KEY (`id`)
) ENGINE=MEMORY;
做一些有用的東西,然後使用拖放;
DROP TABLE temp_32rfd293:
計劃的活動,刪除mydb.temp_%表年長超過1天
你要清理偶爾拋棄臨時表,你可以在MySQL中建立一個計劃的事件做這個。如果您選擇這樣做考慮使用臨時表的專用模式來防止意外刪除。
注意:您需要在您的my.ini中使用event_scheduler=ON
才能正常工作。
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 ;
即使是臨時表嗎?那麼Golang中沒有辦法使用臨時表? – william
該文檔指出創建臨時表不會執行隱式提交(https://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html),但是無法向其添加索引因爲它會。 – william
MySQL中的臨時表只對當前連接可見。一旦連接關閉,它們將被丟棄。如果您使用的是臨時表格,則在您開展業務時,您必須堅持這一關係。 – Code4aliving