我有一个运行 MariaDB 10.5 的遗留应用程序,其中有一些糟糕的数据库设计选择(例如存储为 VARCHAR(50) 的财务值),我正在尝试改进这些选择。
例如,我可以将 Total_amount VARCHAR(50) 列更改为更合理的 DECIMAL:
ALTER TABLE orders MODIFY total_amount DECIMAL(12, 2);
但是,当我这样做时,有时会收到如下警告:
Data truncated for column 'total_amount' at row 120058
由于这些直到我运行 ALTER TABLE 查询后才会显示,因此我无法检查截断是否重要。例如,如果尾随空白已被删除,那很好,但如果数值已更改,那就是一个主要问题。绝大多数行的修改都没有问题,但我确实需要检查生成警告的每一行。
有没有办法问 MariaDB:“如果我运行这个 ALTER TABLE 命令,哪些行会发生变化以及这些行上的前后值是什么”?许多其他软件都有“试运行”选项,允许我执行此操作,例如我可以使用 --dry-run 运行 rsync,它会告诉我它将传输哪些文件,但实际上不会传输它们。
我知道我可以创建表的克隆,更改克隆,与原始表进行比较,然后删除克隆,但如果有更简单的方法来实现这一点,那将节省我很多精力。