您的位置:首页 > 数据库 > MySQL

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

2016-02-27 11:39 726 查看
MySQL追加注释或者大量修改注释 2016-01-25 20:28:05

分类: MySQL

MySQL 5.6.14

之前一个项目比较仓促,开发给的建表语句没有注释.
现在要补全注释信息.
但是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 '';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: