是否有一种优雅的规范方法可以在MySQL数据库中创建一个视图(如果它不存在),但如果该视图已经存在则不执行任何操作?
有similar question here,其答案是使用"创建或替换视图"语法。
这对我不起作用,因为如果它存在,我不想替换它。
理想的语法就像"创建如果不存在视图"。
答案 0 :(得分:1)
如果您尝试创建已存在的视图,则现有视图保持不变。
当然,有一个令人不快的副作用:它会引发错误:)但也许你可以忍受它......
MySQL没有提供这样的功能。正如Barmar建议的那样,使用存储过程(可能是一次性的)或外部脚本,我看不到其他选择。
您评论道:
一旦我的代码被他人使用,[替换现有视图而不考虑]可能是危险的
但您的代码依赖其他人创建的视图同样危险。您的数据库是应用程序的内在组件,应该这样对待。没人应该惹它。如果您想让您的用户创建自己的视图,请指示他们在单独的数据库中创建它。
如果您的目标系统只有一个数据库可用(如在大多数共享主机解决方案中),通常的方法是为您自己的结构名称添加前缀。