创建如果不存在视图?

kum*_*ala 27 mysql sql view h2

create view if not exists在MySQL或H2数据库中有什么办法吗?

Sac*_*n R 22

从第12.1.12.CREATE VIEW MySQL 5.0参考手册的语法:

CREATE VIEW Syntax

CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
Run Code Online (Sandbox Code Playgroud)

CREATE VIEW语句创建一个新视图,或者在给定OR REPLACE子句时替换现有视图.这个语句是在MySQL 5.0.1中添加的.如果视图不存在,则CREATE OR REPLACE VIEW与CREATE VIEW相同.如果视图确实存在,则CREATE OR REPLACE VIEW与ALTER VIEW相同.

  • 使用 CREATE OR REPLACE 的结果与 CREATE IF NOT EXISTS 不同。前者会覆盖现有视图,而后者不会(如果它在 MySQL 中可用......) (2认同)

And*_*mar 19

通常的方法是使用create or replace以下方法覆盖视图:

create or replace view YourView
as
select * from users
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果替换现有视图,其依赖视图是否会变为无效?这就是为什么需要测试视图的存在. (4认同)