首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将所有列从一种类型更改为另一种类型,同时更改所有FK列?

如何将所有列从一种类型更改为另一种类型,同时更改所有FK列?
EN

Database Administration用户
提问于 2019-05-12 18:52:26
回答 1查看 45关注 0票数 0

在继承的DB中,我们发现大约有25个表具有定义为tinyint的主键。

对于其中一些人来说,这是一个迫在眉睫的问题,因为这种乐观的优化与我们(在某些情况下,很快)需要这些表比tinyint所允许的更多行的事实相冲突。

对于其他表来说,问题就在不久的将来,因为我们已经决定将提供程序和DB引擎切换到一个几乎兼容的关系数据库管理系统,但是缺乏tinyint支持.

每个表都有指向它们的2-6个外键关系,因此我们不仅必须更改这些列,而且还要更改FK列。

是否可以以某种方式编写这种更改的脚本,更改所有列,其中name = id和type = tinyint (例如,smallint或甚至int),同时修改所有表,同时引用FK引用这些列,以便它们也匹配?

我见过将所有列从一种类型更改为另一种类型;但我尚未处理外键情况。

EN

回答 1

Database Administration用户

发布于 2019-05-12 23:59:18

这样做可能会奏效:

  1. (备份数据库以防万一)
  2. 禁用FKs。
  3. information_schem.columns中使用合适的ALTER TABLE语句,构造D8语句。
  4. 启用FKs。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/237974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档