如果表存在,则要截断表:
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'mytable') TRUNCATE mytable
错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在' IF EXISTS附近(从INFORMATION_SCHEMA.TABLES中选择1 TABLE_NAME =' mytable')'在第1行
我之后也尝试添加THEN,但问题似乎是IF。
答案 0 :(得分:8)
您需要以下两个声明来执行此操作:
create table if not exists <mytable>;
truncate table <mytable>;
答案 1 :(得分:1)
所以我遇到了类似的问题,为了解决这个问题,我创建了这个程序:
DELIMITER $$
DROP PROCEDURE IF EXISTS `truncate_if_exist`$$
CREATE PROCEDURE `truncate_if_exist`(IN tbl_name VARCHAR(150) )
BEGIN
IF EXISTS( SELECT 1 FROM information_schema.TABLES WHERE table_name = tbl_name AND table_schema = DATABASE()) THEN
SET @query = CONCAT('TRUNCATE ', tbl_name);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END $$
DELIMITER ;
然后为每个我想截断的表调用它
例如:
CALL truncate_if_exist('users');
CALL truncate_if_exist('random_tmp_table');
显然,如果表不存在,它将不会运行TRUNCATE
命令。