繁体   English   中英

设置默认为0,在MySQL Alter Table中不存在默认值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM