更改列的数据类型,由其他表引用

时间:2012-01-26 18:24:53

标签: sql database oracle

我想更改表A中主键列的数据类型,该表由表B引用。模式类似于 -

表A :( col1A编号,col2A ......) 表B:(col1B编号,col2B ...)

col2B - > COL1A

我想将col1A的数据类型从number更改为varchar。我希望这也反映在表B中。有没有简单的方法呢?

- 感谢。

2 个答案:

答案 0 :(得分:4)

不,没有简单的方法可以做到这一点。假设两个表都包含数据,则需要

  • 向表A添加新的VARCHAR2
  • 更新A以将新列设置为TO_CHAR( col1A )
  • 向表B添加新的“VARCHAR2”列
  • 更新B以将列设置为TO_CHAR( col2B )
  • 删除现有的外键约束
  • 删除现有的主键约束
  • 从A
  • 中删除col1A
  • 从B
  • 中删除col2B
  • 重命名A&中的新列(如果需要) B到col1Acol2B
  • 创建新的主键约束
  • 创建新的外键约束

显然,这将是一项相当昂贵的行动。

答案 1 :(得分:1)

这是T-SQL(SQL Server)中的概念验证。基本上,我们将表INT中的主键数据类型从UNIQUEIDENTIFIER更改为A(GUID),表{{}}中的外键引用{ {1}}。

B