将许多字段的data_type从bit转换为tinyint

时间:2012-05-11 03:11:58

标签: mysql bit tinyint

以下查询是否可以接受转换字段'data_types?

的方法
UPDATE INFORMATION_SCHEMA.COLUMNS 
SET `COLUMNS`.`DATA_TYPE` = 'tinyint'
WHERE
`COLUMNS`.`TABLE_SCHEMA` = 'BAR' 
AND `COLUMNS`.`TABLE_NAME` = 'FOO'
AND `COLUMNS`.`DATA_TYPE` = 'bit'

我是否应该关注数据完整性,还是将数据存储为tinyint而不会出现问题?

2 个答案:

答案 0 :(得分:1)

这不行。 INFORMATION_SCHEMA数据库上不允许操作UPDATE,DELETE,INSERT。

Here's why.

答案 1 :(得分:1)

您无法直接修改元数据表(它们实际上是视图,但区别对于这种情况并不重要)但您可以使用它们生成alter table语句,如下所示:

SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.' + TABLE_NAME + ' ALTER COLUMN ' + COLUMN_NAME + ' TINYINT' + CASE WHEN IS_NULLABLE = 'YES' THEN ' NULL;' ELSE ' NOT NULL;' END
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE `COLUMNS`.`TABLE_SCHEMA` = 'BAR' 
AND `COLUMNS`.`TABLE_NAME` = 'FOO'
AND `COLUMNS`.`DATA_TYPE` = 'bit'