【发布时间】:2015-07-18 05:57:45
【问题描述】:
是否有一种优雅的规范方法可以仅在 MySQL 数据库中创建视图不存在时才创建视图,但如果视图已经存在则不执行任何操作?
有一个similar question here,其答案是使用“CREATE OR REPLACE VIEW”语法。
这对我不起作用,因为如果视图存在,我不想替换它。
理想的语法是像“CREATE IF DOES NOT EXIST VIEW”这样的语法。
【问题讨论】:
-
我认为做到这一点的唯一方法是使用存储过程对
INFORMATION_SCHEMA执行查询,然后决定是否创建视图。 -
您是否尝试从应用程序中读取数据库?这可以在脚本/后端方面得到更好的处理。如果只是在数据库中@Barmar 有正确的想法
-
@Bharmar:我正在编写的代码可以在其他人的数据库上执行,我没有事先控制,所以我不能指望那里有存储过程。当然,我也可以创建一个存储过程,但这与视图有相同的问题(如果它已经存在,我不想修改它,只添加从未存在的东西;这样更安全)。
-
我认为没有任何方法可以直接在 SQL 中执行此操作,您需要使用数据库之外的应用程序语言来执行此操作。
-
@FirebadeDan:是的,我最终想从应用程序中读取视图。就我而言,来自 R 脚本。您建议的代码在应用程序脚本端是什么?现在,我的脚本总是简单地调用“CREATE OR REPLACE VIEW”,这在我的本地数据库上进行测试时是可以的,但是一旦我的代码被其他人使用,这可能会很危险。