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

标签 sql oracle ddl

我有一个父表(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/

相关文章:

oracle - 非法使用 LONG 数据类型 Oracle

MySQL - 如何更改所有数据库中的列数据类型?

java - 将时间戳从数据库格式化为 Java

postgresql - 如何在 Postgres 中删除表的所有索引?

名称中带有 $ 的 Oracle 表

php - 为什么sql给我错误 "Invalid parameter number: parameter was not defined"

c# - 迁移 "Legacy"SQLite 数据库以使用 Entity Framework 时的主键问题

mysql - 使用sql limit从表中反向检索行

sql - 使用 T-SQL 构建去年的客户报告

java - 如何对相关Java字符串强制执行数据库字段大小限制?