我有一个父表(ParentId)和一个子表(ParentId,ChildId)。父表中的 ParentId 定义为 VARCHAR2(25 个字符),子表中的 ParentId 也是如此。我想将数据类型更改为 VARCHAR2(50 个字符)。我可以通过这种方式将更改级联到子表吗?
干杯!
最佳答案
没有。无法级联更改。 (好吧,如果您基于相同的用户定义类型定义了列,则可能会出现一些晦涩的方式,但这无疑会产生比解决的问题更多的问题)。您需要为父表发出一个 ALTER
指令,为子表发出一个指令。
如果您有一个更复杂的架构,您试图通过许多子表和孙表来跟踪父表的更改,则可以使用数据字典来遍历层次结构。这是one query to return the table hierarchy基于 Frank Kulash 的 OTN Forums posts 之一。如果每个表中的列名称相同,您可以做一些更简单的事情,只需查询 dba_tab_columns
来查找具有该名称且 data_length
为 25 而不是 50 的所有列.
关于sql - 在 Oracle 中 - ALTER TABLE 我可以级联数据类型更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18000766/