MySQL 中是否有一个函数可以在 table 达到某个值(例如 100MB)时将其截断?
Is there a function in MySQL to truncate a table when it reaches a certain value, like 100MB?
SELECT ehrt_cache_render;
IF TABLE ehrt_cache_render > 20 MB THEN TRUNCATE TABLE ehrt_cache_render;
END IF;
我试过了。
这是一种可能性,要做到这一点
您应该在查询中指定数据库名称 YOUR_DATABASE_NAME
否则,您可能会截断不需要的表
SELECT
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
INTO @size_table
FROM information_schema.TABLES
WHERE
table_schema = "YOUR_DATABASE_NAME"
AND table_name = "ehrt_cache_render";
SELECT IF(@size_table IS NULL,@sql := "DO NULL", IF(@size_table > 100,@sql := "TRUNCATE TABLE YOUR_DATABASE_NAME.ehrt_cache_render",@sql := "DO NULL"));
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SELECT ehrt_cache_render;
IF TABLE ehrt_cache_render > 20 MB THEN TRUNCATE TABLE ehrt_cache_render;
END IF;
我试过了。
这是一种可能性,要做到这一点
您应该在查询中指定数据库名称 YOUR_DATABASE_NAME
否则,您可能会截断不需要的表
SELECT
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
INTO @size_table
FROM information_schema.TABLES
WHERE
table_schema = "YOUR_DATABASE_NAME"
AND table_name = "ehrt_cache_render";
SELECT IF(@size_table IS NULL,@sql := "DO NULL", IF(@size_table > 100,@sql := "TRUNCATE TABLE YOUR_DATABASE_NAME.ehrt_cache_render",@sql := "DO NULL"));
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;