Mysql 将多个字段的数据类型从bit转换为tinyint

Mysql 将多个字段的数据类型从bit转换为tinyint,mysql,bit,tinyint,Mysql,Bit,Tinyint,以下查询是转换字段数据类型的可接受方式吗 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?这不行。不允许对

以下查询是转换字段数据类型的可接受方式吗

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?

这不行。不允许对信息架构数据库执行更新、删除、插入操作


您不能直接修改元数据表(它们实际上是视图,但区别在这种情况下并不重要),但您可以使用它们生成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'

好吧,如果数据完整性没有问题,我可以在一个很好的foop中更改我的所有表…它有效吗?计划也这样做。无法确认此操作的安全性,因此未执行此操作。