有没有办法可以将默认值设置为0,其中列符合某些条件?例如没有默认值或者是varchar或INT?
似乎我有一个大约100列(...)的表格,我不想浏览每一列并设置默认值。
这只是一台测试机器,它似乎与我安装的较新版本的mysql有关。
谢谢!
答案 0 :(得分:3)
您可以检查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');
您可以根据列的其他属性更改条件,例如数据类型等
答案 1 :(得分:1)
没有
列的默认值是架构的属性,不能根据其中的数据进行更改。换句话说,您不能将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"
}
}