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语句的任何差异,我的意思是一切都像它应该是什么。
答案 0 :(得分:1)
当您尝试cascade not including table data
表列数据类型时,语句alter
会有所不同。
CASCADE
的{{1}}选项会将类型更改传播到相关ALTER TYPE
和types
。 tables
本身有一些选项可让您选择是CASCADE
到convert 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