Trafodion支持语法“get views on table <tablename>”,可以看到一个表上关联的视图。
在Trafodion中,如果表有被其他视图引用,则无法直接用"drop table <tablename>"来进行删除。这种情况下,我们需要使用"drop table <tablename> cascade"来进行级联删除。
然而,如果某一个表被很多的视图引用,而正好我们只是想重建表结构,并不想删除相关的视图,这一动作则显得比较繁琐。
由于Trafodion的表和OBJECT_ID和视图的OBJECT_ID具有关联性,如果删除表不删除对应的视图,则表重建后就无法和视图正常关联起来。因此,删除表使用CASCADE先把对应的视图删除,就是不可避免的了。
因此,在重建表之前,先获取到表上关联的视图并把视图的DDL保存下来,等表重建以后再把视图创建起来,可能是当前最好的一种方式 了。
幸好,Trafodion有条SQL语法“get views on table <tablename>”,可以用来查看表上关联的视图。
我们下面来简单做个示例,
--create table
create table test_1025(a int, b varchar(10));
--create view1
create view v1_test_1025 as select a from test_1025;
--create view2
create view v2_test_1025 as select b from test_1025;
--create view3
create view v3_test_1025 as select a,b from test_1025;
--check the related views on table test_1025
SQL>get views on table test_1025;
Views on Table SEABASE.TEST_1025
================================
TRAFODION.SEABASE.V1_TEST_1025
TRAFODION.SEABASE.V2_TEST_1025
TRAFODION.SEABASE.V3_TEST_1025
=======================
3 row(s) returned
--- SQL operation complete.