[英]Set default to 0 where no default exists in mysql 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');
您可以根据列的其他属性(例如数据类型等)更改条件。
没有。
列的默认值是架构的属性,不能根据其中的数据进行更改。 换句话说,您不能将SELECT语句与ALTER TABLE语句结合使用。
最接近的是使用Perl或其他脚本语言为您动态生成ALTER TABLE语句。 然后,您可以将这些语句应用于数据库。
类似于(伪代码)的东西:
@columns = "describe table_name";
for each $column in @columns {
if (conditions are right){
print "ALTER TABLE CHANGE COLUMN $column $column int default 0"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.