真正的安心问题。
我的数据库中有一个字段,它使用tinyint(3)
作为整数值。我现在意识到这是为了降低值并希望将其更改为smallint
。如果我使用phpMyAdmin更改此设置,是否会影响当前的任何数据?我在本地尝试过,看起来很好,但我更喜欢由拥有更多数据库经验的人来运行它。
答案 0 :(得分:4)
您可以使用以下查询:
mysql> ALTER TABLE TableName MODIFY Id SMALLINT
还要确保列上是否附加了约束,然后您需要先删除这些约束。
答案 1 :(得分:1)
您的数据将受到影响 - 它会从tinyint
更改为smallint
,因此实际上整个列都将经历{{1}操作。但是,在经历任何截断或数据丢失的意义上,不会受到影响。
由于CAST
是tinyint
的子集,因此此强制转换操作不应导致任何问题。如果您尝试在查询中将smallint
值转换为tinyint
,则永远不会期望失败,因为每个smallint
也是tinyint
。修改表模式时也适用相同的逻辑。