mysql 存储过程,检查一个临时表是不是空的,如果不是就删除他重新建立临时表
时间: 2023-09-06 19:13:50 浏览: 44
可以使用以下存储过程来检查临时表是否为空,并在需要时删除并重新创建临时表:
```
DELIMITER //
CREATE PROCEDURE check_temp_table()
BEGIN
DECLARE table_count INT;
SELECT COUNT(*) INTO table_count FROM information_schema.tables WHERE table_name LIKE 'temp_%';
IF table_count > 0 THEN
DROP TABLE IF EXISTS temp_table;
CREATE TEMPORARY TABLE temp_table (id INT);
END IF;
END //
DELIMITER ;
```
这个存储过程首先查询信息模式中以 "temp_" 开头的表的数量,如果数量大于0,说明存在临时表。然后删除名为 "temp_table" 的临时表(如果存在)并重新创建它。你可以根据自己的需求进行修改。
相关问题
mysql 数据库 写一段存储过程,如果一个临时表不是空的,就删除他
好的,以下是一个简单的 MySQL 存储过程,用于检查并删除临时表:
```
DELIMITER $$
CREATE PROCEDURE check_and_drop_temp_table(IN table_name VARCHAR(255))
BEGIN
DECLARE table_count INT;
SET table_count = (SELECT COUNT(*) FROM information_schema.tables WHERE table_name = table_name AND table_type = 'TEMPORARY');
IF table_count > 0 THEN
SET @query = CONCAT('DROP TEMPORARY TABLE ', table_name);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END $$
DELIMITER ;
```
使用方法:传入要检查和删除的临时表名,例如 `check_and_drop_temp_table('temp_table')`。
该存储过程首先查询信息模式中是否存在指定名称和类型的表,如果存在,则动态构建并执行 DROP TEMPORARY TABLE 语句以删除该表。
请注意,此存储过程只适用于临时表,如果传入的表名不是临时表,则不会执行删除操作。同时,本存储过程仅适用于 MySQL 数据库。
mysql 存储过程,检查一个临时表存不存在,如果不存在则创建它
可以使用以下存储过程来检查临时表是否存在,如果不存在,则创建它:
```
DELIMITER $$
CREATE PROCEDURE check_temp_table()
BEGIN
DECLARE table_count INT;
SELECT COUNT(*) INTO table_count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'temp_table' AND TABLE_TYPE = 'TEMPORARY';
IF table_count = 0 THEN
CREATE TEMPORARY TABLE temp_table (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
description TEXT
);
END IF;
END$$
DELIMITER ;
```
这个存储过程首先查询数据库中是否存在名为 `temp_table` 的临时表。如果存在,则不需要做任何事情。如果不存在,则创建一个名为 `temp_table` 的临时表,并定义其结构。你可以根据需要修改临时表的结构。