4

真是一个安心的问题。

我的数据库中有一个字段tinyint(3)用作整数值。我现在意识到这是一个低值并想将其更改为smallint. 如果我使用 phpMyAdmin 更改此设置,是否会影响任何当前数据?我在本地尝试过,看起来不错,但我更喜欢由具有更多数据库经验的人运行它。

4

2 回答 2

6

您可以使用以下查询:

mysql> ALTER TABLE TableName MODIFY Id SMALLINT

还要确保列是否附加了任何约束,那么您需要首先删除这些约束。

于 2015-03-20T13:20:19.817 回答
2

您的数据在某种程度上受到影响——它将从 更改tinyintsmallint,因此实际上整个列都将进行CAST操作。但在经历任何截断或数据丢失的意义上它不会受到影响。

因为tinyint是 的一个子集smallint,所以这个转换操作应该不会引起任何问题。如果您尝试在查询中将tinyint值强制转换smallint为,您永远不会期望它会失败,因为 everytinyint也是smallint. 修改表架构时也适用相同的逻辑。

于 2015-03-20T13:31:21.917 回答