重命名/重构数据库元素 - 仅存在脚本但不存在数据库

时间:2017-09-04 19:55:59

标签: mysql database coding-style refactoring-databases

我准备好创建数据库的脚本(.sql)文件(创建模式,程序,添加测试数据)。

我还有针对这些脚本设置的编码标准/约定。

Ex:表名不应以" _tbl"结尾,所有SQL关键字(SELECT,UPDATE,FROM)都应该是大写。

是否有最好/最简单的方法来重命名这些(根据我的编码标准),这样当我重命名数据库对象时,引用重命名对象的其他对象应该使用新名称自动更新

Found few links to serve this。但是想确认这是最好的&简单的方法。或者比这更好的方式..

例如,如果我重命名表中的列,则引用该列的任何存储过程都将使用新名称自动更新。

注意:如果MySQL脚本的工具与SQL脚本工具不同,请注释有关MySQL脚本的工具

非常感谢提前.....

1 个答案:

答案 0 :(得分:0)

更改列名不会更新引用它的存储过程。

CREATE TABLE t ( v char(1) );
INSERT INTO t SET v='x';

CREATE PROCEDURE p() 
  SELECT v FROM t;

CALL p();
+------+
| v    |
+------+
| x    |
+------+

ALTER TABLE t CHANGE COLUMN v v2 CHAR(1);

CALL p();
ERROR 1054 (42S22): Unknown column 'v' in 'field list'

视图存在类似问题。

我认为最好的选择是使用文本编辑器编辑SQL脚本并进行搜索&替换要更改的表名的所有实例。使用文本编辑器手动更新所有实例。然后运行SQL脚本。