2013-08-01 48 views
2

我有一个父表(ParentId)和一个孩子(ParentId,ChildId)表。父表中的ParentId被定义为VARCHAR2(25个字符),子表中的ParentId也是如此。我想将数据类型更改为VARCHAR2(50个字符)。我可以以这种方式将此更改级联到Child表吗?在Oracle中 - ALTER TABLE可以级联数据类型更改吗?

干杯!

回答

2

不可以。没有办法级联这些更改。 (好吧,如果你已经根据相同的用户定义类型定义了列,那么可能会有一些模糊的方式,但无疑会产生比解决问题更多的问题)。您需要为父母发放一个ALTER,并为子表发出一个ALTER

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