mysql - 将 DEFAULT 从 NULL 替换为 0

标签 mysql sql

我添加了几列 (100+) 属性 TINYINT(1) 和默认值 NULL 但问题是默认值必须为 0.

有什么方法可以通过检测字段 TINYINT(1) 然后更改表来通过查询来实现吗??

请帮帮我。

最佳答案

您可以执行查询以在 INFORMATION_SCHEMA 中找到这些列,这是一组 View ,由服务器自动维护。

试试这个:

USE INFORMATION_SCHEMA;
SELECT * FROM `COLUMNS`
WHERE COLUMN_TYPE = 'tinyint(1)'

您可以在数据库或表上添加过滤器。然后,您可以直接使用此 View 创建查询:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, ".", TABLE_NAME, " MODIFY ", COLUMN_NAME, " tinyint(1) DEFAULT 0") AS q
FROM `COLUMNS`
WHERE COLUMN_TYPE = 'tinyint(1)'

这将生成如下查询:ALTER TABLE schema.table MODIFY column tinyint(1) DEFAULT 0,这是更改默认值所需执行的操作。

关于mysql - 将 DEFAULT 从 NULL 替换为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19611087/

相关文章:

mysql - 使用另一个表 MySQL 中的相应值更新多行

php - 哪种方式在mysql上存储统计数据更有效?

sql - 约束检查范围 float

php - 循环遍历 SQL 并在 PHP 中计算总和

mysql - 从条件表中获取 WHERE 子句的条件

MySQL:无法从 SELECT 语句中调用函数

php - 更新 MySQL 数据库

mysql - heroku - 无法运行 rake db :migrate - no such file --Time

sql - postgres : id auto-increment with millions of rows per day. 坏了吗?

mysql - 循环检查从一张表到另一张表的where条件