MySQL - 检查数据类型是否为smallint

时间:2012-09-23 12:54:05

标签: mysql

我正在研究现有的数据库实现(SQL和MySQL)。现在我需要将一列的数据类型从smallint更改为mediumint。虽然这不是问题,但问题是在实现中处理更新的方式。

在每次启动时,程序都会执行一个简单的MySQL语句(如SELECT xyz FROM 'tablename')来测试是否需要更新。如果语句抛出错误(如'xyz'不存在时的示例),则执行更新本身(在示例中,将创建'xyz')。 所以我需要的是一个语句,如果列的数据类型为smallint则抛出错误。我只能将大于65535的整数写入数据库,但当然这不是一个选项。

如果没有这种可能性并且我实际需要更改处理更新的方式,是否有一种简单的方法可以检查列'xyz'的数据类型是否为smallint

感谢。

2 个答案:

答案 0 :(得分:0)

空结果集是否算作错误?然后你可以使用

SHOW COLUMNS FROM tablename WHERE Field = "xyz" AND Type = "mediumint(9)"

答案 1 :(得分:0)

使用异常处理流控制(逻辑)是一种糟糕的设计:例外是“异常”。

考虑将您的设计更改为不需要例外。例如,查询目录以找出所需内容:

select * from information_schema.columns
where tablename = 'foo'
and columnname = 'bar'

似乎您需要知道的所有内容都可以在information_schema表格中找到。