我正在使用MariaDB 10.1 SQLyog 11.5
我已使用以下查询重命名该表。
ALTER TABLE old_name RENAME new_name
但是有许多存储过程引用'old_name'。我打开了所有SP创建查询并进行了更改。因为我不知道哪个SP有一个引用old_name表的查询。
有没有办法知道哪个SP有查询old_name表的查询?
答案 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;