สำหรับสถานการณ์ของฉันฉันต้องการ จำกัด การดร็อปโดยใช้เลเยอร์การดู:
- สร้างสำเนาของมุมมอง materialized ต่อท้ายด้วย "_new" และยังใช้ "ไม่มีข้อมูล" เพื่อประสิทธิภาพตรวจสอบให้แน่ใจว่ามีการสร้างดัชนีใด ๆ ด้วยส่วนต่อท้ายและวัตถุอื่น ๆ ที่เกี่ยวข้องที่ค้นพบผ่าน DROP ...
- สร้างมุมมองตามมุมมอง materialized ใหม่เพื่อให้เลเยอร์ของสิ่งที่เป็นนามธรรมดังนั้นฉันจะต้องเปลี่ยนมันในที่เดียว
- แก้ไขการอ้างอิงที่มีอยู่เพื่ออ้างถึงมุมมองใหม่แทน (รีเฟรชข้อมูลหากจำเป็นก่อน)
- ดร็อปมุมมองและดัชนีที่ปรากฏจริงซึ่งตอนนี้ไม่ควรมีผู้ติดตาม
- เปลี่ยนมุมมองและดัชนีที่ปรากฏขึ้นเพื่อปล่อยคำต่อท้ายเพื่อเรียกคืนชื่อดั้งเดิม
เช่น.
create table test (myfield int);
insert into test values (1);
create materialized view mv_test as select myfield from test;
create view v_test as select myfield from mv_test;
select * from v_test;
create materialized view mv_test_new as select myfield, myfield+1 as myfield2 from test;
alter view v_test rename to v_test_old;
alter materialized view mv_test rename to mv_test_old;
create view v_test as select myfield,myfield2 from mv_test_new;
select * from v_test;
alter materialized view mv_test_new rename to mv_test;
drop view v_test_old; -- when ready
drop materialized view mv_test_old; -- when ready