0

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

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

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

谢谢。

4

2 回答 2

0

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

SHOW COLUMNS FROM tablename WHERE Field = "xyz" AND Type = "mediumint(9)"
于 2012-09-23T13:06:47.500 回答
0

使用异常处理流控制(逻辑)是糟糕的设计:异常是针对“异常”的。

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

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

似乎您需要知道的一切都可以在information_schema表格中找到。

于 2012-09-23T14:21:55.083 回答