在生产数据库中减少列大小并修剪数据,处理同一列上的约束/依赖关系

问题描述 投票:0回答:1

我有一个场景,Java开发人员已经对变量进行了更改,该变量用于从列-col-table-tbl传输数据。现在,我必须将列varchar(15)更改为varchar(10)。但是,在进行此更改之前 - 必须处理现有数据和相同列上的约束/依赖项。

这样做的最佳顺序应该是什么?我想首先检查约束,然后修剪现有数据,然后更改表。请建议如何处理约束/依赖关系,并在处理之前,如何检查这些依赖关系。

database db2 db2-luw
1个回答
0
投票

模式演化(随着时间的推移发生在数据库中的表和列中的DDL变化,同时保留现有的数据和功能)是一个很好理解的主题,有几个解决方案,其中一些是独立于RDBMS的,另一些是内置于RDBMS的解。

生产环境的一个关键要求是需要前向更改和后退,这些都可以在无人值守的情况下运行。

许多开源倡导者使用Liquibase,它也有商业变体。

适用于Linux / Unix / Windows的Db2还提供了一个内置的存储过程SYSPROC.ALTOBJ,它有助于自动化各种模式演变更改,包括减小列的大小。您需要仔细研究其文档并在非生产环境中对其进行全面测试,直到您满意为止。在这里阅读https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0011934.html

您可以使用您喜欢的任何语言(包括SQL)来扩展您自己的脚本,但请记住,您还应该构建并测试一个回退脚本。

© www.soinside.com 2019 - 2024. All rights reserved.