MySQL:创建视图,如果它不存在,但如果存在则不改变它

时间:2015-07-15 21:39:04

标签: mysql view

是否有一种优雅的规范方法可以在MySQL数据库中创建一个视图(如果它不存在),但如果该视图已经存在则不执行任何操作?

similar question here,其答案是使用"创建或替换视图"语法。

这对我不起作用,因为如果它存在,我不想替换它。

理想的语法就像"创建如果不存在视图"。

1 个答案:

答案 0 :(得分:1)

如果您尝试创建已存在的视图,则现有视图保持不变。

当然,有一个令人不快的副作用:它会引发错误:)但也许你可以忍受它......

MySQL没有提供这样的功能。正如Barmar建议的那样,使用存储过程(可能是一次性的)或外部脚本,我看不到其他选择。

您评论道:

  一旦我的代码被他人使用,

[替换现有视图而不考虑]可能是危险的

但您的代码依赖其他人创建的视图同样危险。您的数据库是应用程序的内在组件,应该这样对待。没人应该惹它。如果您想让您的用户创建自己的视图,请指示他们在单独的数据库中创建它。

如果您的目标系统只有一个数据库可用(如在大多数共享主机解决方案中),通常的方法是为您自己的结构名称添加前缀。