mysql - 在 mysql Alter Table 中不存在默认值的情况下将默认值设置为 0

标签 mysql sql alter-table

有没有一种方法可以将列符合特定条件的默认值设置为 0?例如没有默认值或者是 varchar 或 INT?

我似乎有一个包含大约 100 列的表格 (...),我不想遍历每一列并设置默认值。

这只是一台测试机,似乎与我安装的mysql版本较新有关。

谢谢!

最佳答案

您可以检查 INFORMATION_SCHEMA 以生成一系列 ALTER TABLE 语句:

例如,从给定的数据库和表中选择当前没有默认值的列:

SELECT CONCAT('ALTER TABLE `', TABLE_NAME, 
  '` ALTER COLUMN `', COLUMN_NAME, '` SET DEFAULT = 0;') AS _sql 
FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_DEFAULT IS NULL
 AND (TABLE_SCHEMA, TABLE_NAME) = ('mydatabase', 'mytable');

您可以根据列的其他属性更改条件,例如数据类型等

关于mysql - 在 mysql Alter Table 中不存在默认值的情况下将默认值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388771/

相关文章:

php - 从所选 User_ID 的最新记录开始更新日期范围内的所有值

MySQL 数据库的最大大小是多少?

sql - 检测有序列表中变化的函数

mysql - 如何从Sql表中获取两个日期之间的记录

sql - 如何在sqlite3中将查询定义为变量?

sql - 更改 SQL Server 中的列大小

java - ALTER TABLE FOREIGN KEY 从 java 到 mysql

mysql - 如何导入mysql转储文件?

sql - mysql JOIN 中的 ON 和 WHERE 有什么区别?

postgresql - 通过分隔分隔符将列数据类型从文本更改为数组