Oracle

為什麼我可以使用 PK 創建 MV 日誌——即使沒有 PK?

  • February 8, 2021

我有一個沒有主鍵的表:

在此處輸入圖像描述


我能夠在表上創建 MV 日誌——無需指定是使用主鍵還是 rowid:

create materialized view log on maximo.workorder;

看起來 Oracle 已選擇使用主鍵選項創建 MV 日誌(即使該表沒有主鍵):

在此處輸入圖像描述

我已經測試了 MV 日誌並且它們工作正常。我對 WORKORDER 表所做的任何編輯都會顯示在 MV 日誌中。


為什麼 Oracle 可以使用主鍵選項創建 MV 日誌——即使表沒有主鍵?


編輯:

這裡的相關問題:在沒有PK的表上通過dblink創建快速刷新MV?

在這種情況下,對列的唯一約束NOT NULL(正如我在安裝了 Maximo 的數據庫中檢查該表時所擁有的那樣)足以替代主鍵。

SQL> create table t1(c1 number, c2 number);

Table created.

SQL> create materialized view log on t1;
create materialized view log on t1
*
ERROR at line 1:
ORA-12014: table 'T1' does not contain a primary key constraint

SQL> alter table t1 add unique(c1);

Table altered.

SQL> create materialized view log on t1;
create materialized view log on t1
*
ERROR at line 1:
ORA-12014: table 'T1' does not contain a primary key constraint

SQL> alter table t1 modify c1 not null;

Table altered.

SQL> create materialized view log on t1;

Materialized view log created.

SQL> select master, primary_key from user_mview_logs;

MASTER                         PRI
------------------------------ ---
T1                             YES

引用自:https://dba.stackexchange.com/questions/280839