Oracle
為什麼我可以使用 PK 創建 MV 日誌——即使沒有 PK?
我有一個沒有主鍵的表:
我能夠在表上創建 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