有没有一种简单的方法可以在程序中重命名表?

时间:2016-05-26 07:14:11

标签: mysql stored-procedures mariadb

我正在使用MariaDB 10.1 SQLyog 11.5

我已使用以下查询重命名该表。

ALTER TABLE old_name RENAME new_name

但是有许多存储过程引用'old_name'。我打开了所有SP创建查询并进行了更改。因为我不知道哪个SP有一个引用old_name表的查询。

有没有办法知道哪个SP有查询old_name表的查询?

2 个答案:

答案 0 :(得分:2)

通过此INFORMATION_SCHEMA.ROUTINES,您可以获取存储过程中可用的文本

请尝试此查询:(未经过验证)

SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%old_name%'
      -- AND ROUTINE_TYPE = "PROCEDURE" -- Filter only if need SPs
ORDER BY ROUTINE_NAME;

page

的参考资料

答案 1 :(得分:0)

你可以这样做:

创建RENAME查询

SELECT  CONCAT ('RENAME TABLE ',
  GROUP_CONCAT(t.TABLE_SCHEMA,'.',t.TABLE_NAME,' TO ', t.TABLE_SCHEMA,'.',REPLACE(t.TABLE_NAME,'old','NEW') SEPARATOR ' , ') 
) INTO @sql
FROM information_schema.TABLES t
WHERE t.TABLE_TYPE = 'BASE TABLE'
AND t.TABLE_SCHEMA IN ('SCHEMA1','SCHEMA2')
AND t.TABLE_NAME LIKE 'old_table%';

仅验证

SELECT @sql;

准备并执行

PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;