我正在使用Maria DB 5.5版本,并且在创建视图时不允许使用“不存在时创建视图”子句。根据需要,我需要检查在创建时是否查看现有视图。
在这里,我有2种解决此问题的方法...
在这两个选项中,哪个是更好的建议方法?
答案 0 :(得分:1)
如果在操作之前必须知道视图是否存在,则使用信息模式将很有帮助。
否则,创建或替换要简单得多。您的视图定义可以单独作为DDL语句使用。
第一个选项要求服务器处理多个查询,因此它将花费比第二个选项稍长的时间。但是视图创建(在MySQL和MariaDB中)非常快:在查询中使用视图之前,不会检索到实际数据。
答案 1 :(得分:0)
因此VIEW
包含了许多数据库中不断增长的UNION
。因此,VIEW
不存在的唯一方法是当两个新用户“同时”更新视图时。
建议的解决方法:
SELECT GET_LOCK('update_view');
DROP VIEW ...;
CREATE VIEW ...;
SELECT RELEASE_LOCK('update_view');
这避免了对OR REPLACE
(等等)的需要,除了第一次-DROP VIEW
会抱怨VIEW
不存在。可以通过在首次配置计算机时创建虚拟VIEW
来解决。
(研究GET_LOCK
上的参数。)