在Oracle中 - ALTER TABLE可以级联数据类型更改吗?

时间:2013-08-01 17:31:33

标签: sql oracle ddl

我有一个父表(ParentId)和一个子(ParentId,ChildId)表。父表中的ParentId定义为VARCHAR2(25个字符),因此子表中的ParentId也是如此。我想将数据类型更改为VARCHAR2(50个字符)。我可以这样做,以便将此更改级联到Child表吗?

干杯!

1 个答案:

答案 0 :(得分:2)

没有。无法级联更改。 (好吧,如果你根据相同的用户定义类型定义了你的列,那么可能会有一些模糊的方法,但毫无疑问会产生比它解决的问题更多的问题)。您需要为父项发出一个ALTER,为子表发一个。{/ p>

如果您有一个更复杂的架构,您尝试通过许多子表和孙表跟踪父表中的更改,则可以使用数据字典来遍历层次结构。这是基于Frank Kulash one query to return the table hierarchy之一的OTN Forums posts。如果每个表中的列名称相同,则可以更轻松地执行某些操作,只需查询dba_tab_columns以查找具有该名称且data_length为25而不是50的所有列。