2013-08-01 50 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