Amazon Redshift で Late Binding View から通常 View を参照している場合、通常 View を Drop & Create することができることを確認した。
通常 View から通常 View を参照している場合は、依存関係があるため、参照元 View を Drop できない(CASCADE オプションをつけると依存関係のある View も削除される)。
通常 View の場合: 依存関係があるため参照元 View を Drop できない
- テーブル定義を確認する
awsuser 00:58 =# show table dev.public.customer; Show Table DDL statement ----------------------------------------------------------------- CREATE TABLE public.customer ( + c_custkey integer NOT NULL ENCODE az64, + c_name character varying(25) NOT NULL ENCODE lzo, + c_address character varying(25) NOT NULL ENCODE lzo, + c_city character varying(10) NOT NULL ENCODE bytedict, + c_nation character varying(15) NOT NULL ENCODE raw, + c_region character varying(12) NOT NULL ENCODE bytedict, + c_phone character varying(15) NOT NULL ENCODE lzo, + c_mktsegment character varying(10) NOT NULL ENCODE bytedict+ ) + DISTSTYLE EVEN + SORTKEY ( c_nation, c_region ); (1 row) Time: 39.377 ms
- View を作成する
awsuser 01:13 =# create view dev.public.v_customer as select c_custkey, c_name from dev.public.customer; CREATE VIEW Time: 314.311 ms awsuser 01:13 =# create view dev.public.vv_customer as select c_custkey, c_name from dev.public.v_customer; CREATE VIEW Time: 247.827 ms
awsuser 01:13 =# drop view dev.public.v_customer; NOTICE: view vv_customer depends on view v_customer ERROR: cannot drop view v_customer because other objects depend on it HINT: Use DROP ... CASCADE to drop the dependent objects too. Time: 13.303 ms
Late Binding View の場合: 参照元 View を Drop & Create できる
- テーブル定義を確認する
awsuser 00:58 =# show table dev.public.customer; Show Table DDL statement ----------------------------------------------------------------- CREATE TABLE public.customer ( + c_custkey integer NOT NULL ENCODE az64, + c_name character varying(25) NOT NULL ENCODE lzo, + c_address character varying(25) NOT NULL ENCODE lzo, + c_city character varying(10) NOT NULL ENCODE bytedict, + c_nation character varying(15) NOT NULL ENCODE raw, + c_region character varying(12) NOT NULL ENCODE bytedict, + c_phone character varying(15) NOT NULL ENCODE lzo, + c_mktsegment character varying(10) NOT NULL ENCODE bytedict+ ) + DISTSTYLE EVEN + SORTKEY ( c_nation, c_region ); (1 row) Time: 39.377 ms
- View を作成する
create view dev.public.v_customer as select c_custkey, c_name from dev.public.customer; create view dev.public.lbvv_customer as select c_custkey, c_name from dev.public.v_customer with no schema binding;;
awsuser 01:19 =# drop view dev.public.v_customer; DROP VIEW Time: 306.214 ms awsuser 01:19 =# create view dev.public.v_customer as select c_custkey, c_name, c_address from dev.public.customer; CREATE VIEW Time: 387.308 ms
- Late Binding View を参照できることを確認する。
awsuser 01:19 =# show view dev.public.lbvv_customer; Show View DDL statement --------------------------------------------------------------------------------------------------------------------- create view dev.public.lbvv_customer as select c_custkey, c_name from dev.public.v_customer with no schema binding; (1 row) Time: 3.828 ms awsuser 01:20 =# select count(*) from dev.public.lbvv_customer; count ---------- 40502000 (1 row) Time: 98.776 ms