Oracle数据库中不删除重建是否可以修改现有SQL视图?
你写的ALTER VIEW语句报错,核心原因是缺少必要的AS关键字。大部分主流关系型数据库都支持直接通过ALTER VIEW修改视图定义,正确写法如下:
ALTER VIEW employees AS SELECT e.employeeFirstName, e.employeeLastName FROM employee e WHERE manager IS NOT NULL;
不同数据库的支持情况说明:
- 如果你使用MySQL、SQL Server、PostgreSQL 14及以上版本,上述语句可以直接运行,无需删除原有视图,会直接覆盖原有视图的定义。
- 如果你使用的是Oracle、SQLite等不支持
ALTER VIEW修改查询定义的数据库,除了CREATE OR REPLACE VIEW之外没有其他原生的修改方案。CREATE OR REPLACE VIEW本身是原子操作,不会出现视图中途被删除的空窗期,完全可以满足你“不删除重建直接修改”的需求。
注意:修改视图定义时需要保证新查询返回的列名、列顺序、列数据类型和原有视图兼容,否则依赖该视图的上层查询、存储过程等对象可能会运行报错。
内容的提问来源于stack exchange,提问作者Gipsy King
相关产品推荐
相关产品推荐

