MySQL追加注释或者大量修改注释

来源:互联网 发布:淘宝质量好的男装 编辑:程序博客网 时间:2024/06/09 13:38

转自:http://blog.itpub.net/29254281/viewspace-1982180/
之前一个项目比较仓促,开发给的建表语句没有注释.
现在要补全注释信息.
但是MySQL后期追加注释比较麻烦
需要使用modify语法。

只要不小心写错一点,就可能导致表结构的变更,而不是注释的变更.

实验表如下:

create table t(      c1 int primary key auto_increment,      c2 char(20) not null default 'c2'  comment 'c2的注释',      c3 date default '2016-01-25' comment 'date类型测试',      c4 varchar(20) not null default '' ,      c5 bigint ,      c6 text comment 'text测试',      c7 timestamp not null default current_timestamp on update current_timestamp,      c8 datetime not null default now()  );  

通过如下的SQL,解析元数据信息,可以直接显示modify的内容.
追加或者修改注释之后,执行语句即可.
这样可以避免人为的失误.

SELECT     concat(        'alter table ',         table_schema, '.', table_name,         ' modify column ', column_name, ' ', column_type, ' ',         if(is_nullable = 'YES', ' ', 'not null '),         if(column_default IS NULL, '',             if(                data_type IN ('char', 'varchar')                 OR                 data_type IN ('date', 'datetime', 'timestamp') AND column_default != 'CURRENT_TIMESTAMP',                 concat(' default ''', column_default,''''),                 concat(' default ', column_default)            )        ),         if(extra is null or extra='','',concat(' ',extra)),      ' comment ''', column_comment, ''';'    ) s    FROM information_schema.columns    WHERE table_schema = 'test'        AND table_name = 't'

以实验表为例,生成的modify语句如下.

alter table test.t modify column c1 int(11) not null  auto_increment comment '';  alter table test.t modify column c2 char(20) not null  default 'c2' comment 'c2的注释';  alter table test.t modify column c3 date   default '2016-01-25' comment 'date类型测试';  alter table test.t modify column c4 varchar(20) not null  default '' comment '';  alter table test.t modify column c5 bigint(20)   comment '';  alter table test.t modify column c6 text   comment 'text测试';  alter table test.t modify column c7 timestamp not null  default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '';  alter table test.t modify column c8 datetime not null  default CURRENT_TIMESTAMP comment '';  
0 0
原创粉丝点击