Oracle - 创建或替换视图 - 保留列上的注释

enn*_*ion 0 oracle

我有一些固定数量的列的视图.这些列用注释指定.

现在我使用"创建或替换"更改视图sql(某些条件)(不是手动,我的java应用程序的一些业务逻辑更改此视图sql)

视图被创建,并且工作正常.但唯一的问题是添加到列中的所有注释都会丢失.

虽然我知道我们正在重写视图的ddl,有没有办法在sql更改后保留注释?

Syl*_*oux 5

CREATE OR REPLACE VIEW将创建...或替换视图.也就是说,有一个隐含DROP VIEW的¹.

如果您需要在视图上更改某些约束而不完全删除它,则可能需要ALTER VIEW改为.但是,您无法使用它来更改视图的定义.

在您的特定情况下,当您需要更新WHERE子句时,可能另一种选择是使用所有相关列和注释的某种主视图- 但没有该WHERE子句.并在其上添加另一个视图,仅添加该WHERE子句.这样,您只需在需要更新时替换该第二级视图.


¹ 现在注意到现在这里的评论中,这有点过于简化,因为*"特权在之后被保留create or replace".引用文档的相关部分(强调我的):

指定OR REPLACE重新创建视图(如果已存在).您可以使用此子句更改现有视图的定义,而无需删除,重新创建和重新授予先前在其上授予的对象权限.

INSTEAD OF重新创建视图时,将删除视图定义的触发器.