级联不包括表数据

时间:2016-09-19 00:29:12

标签: sql database oracle

create type person_type2 as object
( first_name varchar(30),
last_name varchar(30),
age number(3) )
/
 create table person_table2 of person_type2
/
insert into person_table2
values (person_type2 ('john', 'doe', 50))
/
alter type person_type2
add attribute (dob date),
drop attribute age
cascade not including table data
/ 

我不明白什么是"级联不包括表数据"用于?我运行脚本并且看不到有或没有cascade not include语句的任何差异,我的意思是一切都像它应该是什么。

1 个答案:

答案 0 :(得分:1)

当您尝试cascade not including table data表列数据类型时,语句alter会有所不同。

CASCADE的{​​{1}}选项会将类型更改传播到相关ALTER TYPEtypestables本身有一些选项可让您选择是CASCADEconvert table data作为传播的一部分:选项new type format会转换INCLUDING TABLE DATA;选项data不会转换它。默认情况下,NOT INCLUDING TABLE DATA选项会转换数据。在任何情况下,表数据始终以最新类型版本的格式返回。如果表数据以早期类型版本的格式存储,则Oracle在返回之前将数据转换为最新版本的格式,即使实际存储数据的格式在数据被重写之前不会更改。

在你的情况下,因为你只是删除了一个属性,并在这里添加了一个真正可用CASCADE的新属性。

了解详情: https://docs.oracle.com/cd/B19306_01/appdev.102/b14260/adobjadv.htm#ADOBJ006