mysql 存储过程,检查一个临时表存不存在,如果不存在则创建它
时间: 2023-09-06 20:08:39 浏览: 71
可以使用以下存储过程来检查临时表是否存在,如果不存在,则创建它:
```
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` 的临时表,并定义其结构。你可以根据需要修改临时表的结构。
相关问题
mysql 存储过程,检查一个临时表是不是空的,如果不是就删除他重新建立临时表
可以使用以下存储过程来检查临时表是否为空,并在需要时删除并重新创建临时表:
```
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版本不支持创建临时表。
首先,你可以尝试使用以下语句创建一个临时表:
```
CREATE TEMPORARY TABLE temp_table_name AS SELECT * FROM your_query;
```
如果你仍然无法打开临时表,可以尝试检查当前用户是否具有创建临时表的权限。你可以使用以下命令查看当前用户的权限:
```
SHOW GRANTS FOR CURRENT_USER;
```
确保你有CREATE TEMPORARY TABLES权限。
另外,如果你的MySQL版本较旧,可能不支持创建临时表。在这种情况下,你可以尝试使用其他方法来处理查询结果,例如将结果存储到永久表中,或者使用临时文件来存储结果。