以下查询是否可以接受转换字段'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而不会出现问题?
答案 0 :(得分:1)
这不行。 INFORMATION_SCHEMA数据库上不允许操作UPDATE,DELETE,INSERT。
答案 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'