我正在研究现有的数据库实现(SQL和MySQL)。现在我需要将一列的数据类型从smallint
更改为mediumint
。虽然这不是问题,但问题是在实现中处理更新的方式。
在每次启动时,程序都会执行一个简单的MySQL语句(如SELECT xyz FROM 'tablename'
)来测试是否需要更新。如果语句抛出错误(如'xyz'不存在时的示例),则执行更新本身(在示例中,将创建'xyz')。
所以我需要的是一个语句,如果列的数据类型为smallint
则抛出错误。我只能将大于65535的整数写入数据库,但当然这不是一个选项。
如果没有这种可能性并且我实际需要更改处理更新的方式,是否有一种简单的方法可以检查列'xyz'的数据类型是否为smallint
?
感谢。
答案 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
表格中找到。