sql - Oracle 脚本 - 物化 View 和同义词

标签 sql oracle materialized-views synonym

我有一个关于 Oracle 中脚本的问题!

我在我的 BBDD 中的预建表上有一个物化 View (此 MV 属于用户 DAT_OWN,其他 2 个用户(APP 和 BO)在此 MV 上具有同义词) 我必须更改MV并添加一栏。我知道我需要删除这个 MV 并创建另一个 MV,但是附加同义词是什么?

我以前有一个脚本,例如:

DROP SYNONYM APP.STAT_VOZ;
CREATE SYNONYM APP.STAT_VOZ FOR DAT_OWN.STAT_VOZ;

DROP SYNONYM BO.STAT_VOZ;
CREATE SYNONYM BO.STAT_VOZ FOR DAT_OWN.STAT_VOZ;

DROP MATERIALIZED VIEW DAT_OWN.STAT_VOZ;
CREATE MATERIALIZED VIEW DAT_OWN.STAT_VOZ 
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH COMPLETE
START WITH TO_DATE('21-ene-2013 19:20:00','dd-mon-yyyy hh24:mi:ss')
NEXT (trunc(SYSDATE,'HH')+19/72) 
WITH PRIMARY KEY
AS 
  SELECT           TO_CHAR (SUM (COUNT)) AS sum_count,
         start_date AS date_hour,
         input_type AS input_type
    FROM DAT_OWN.another_table
   WHERE start_date > TO_CHAR (SYSDATE - 60, 'yyyymmdd')
GROUP BY start_date

为什么有人会在删除物化 View 之前先删除同义词 APP 并创建同义词 APP 删除同义词 BO 并创建同义词 BO?在我看来,我必须这样做

drop synonym1
drop synonym2
drop Mview
create Mview
create Synonym1
Create Synonym2

我确信我之前的程序员做得很好,但我不明白他们为什么这样做!有人能给我解释一下吗?

问候

最佳答案

您的原始脚本可能只是由“老派”开发人员编写的。大多数人习惯于在重新创建对象之前立即删除它们。正如您所注意到的,顺序并不重要。

现在大多数人使用CREATE OR REPLACE语法而不是首先删除对象。 Here is a good explanation这个概念的。

关于sql - Oracle 脚本 - 物化 View 和同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486776/

相关文章:

ruby-on-rails - 数据库触发器与 Rails ActiveRecord 回调的优缺点?

java - Oracle 高级队列 : Change Queue Properties at Runtime

Oracle - Materialized View,这个MV可以快速刷新吗?

oracle - 使用 MAX() 在提交物化 View 上可刷新

java - `mysql` .`proc` 表不可用。无法加载存储过程

mysql - 触发器在另一个表中添加新插入的行

c# - 如何通过 Entity 框架自动为 Oracle 数据库生成标识?

mysql - 复制所有行并更改但更改 store_id

mysql - 一个简单的mySQL查询+统计分析

sql - 如何让 NHibernate 只生成 SQL 而不执行它?