2014-11-06 119 views
0

有没有办法更改数据库中具有特定数据类型的所有列?更改所有列WHERE数据类型

我有一些列,他们的数据类型是datetime(6),如果有的话,我只是希望他们是datatime ......没有6个小数。这可能在MySql中做,而不必指定每一列?由于

+0

也可以使用修改功能..你可以看到更多的关于它的http://stackoverflow.com/questions/3773480/how-do-i-alter-table-column-datatype -on-more-1-column – 2014-11-06 16:15:54

+0

我想在整个数据库中完成它。 – raygo 2014-11-06 16:17:33

+0

然后,您需要编写一个脚本来抓取所有表的模式并生成ALTER TABLE查询。 – David162795 2014-11-06 16:27:15

回答

1

必须创建文本字符串与必要的陈述,并将其保存在某个地方(我没有与日期时间(6)列,但必须是这样的):

select 
concat('ALTER TABLE ', 
     TABLE_SCHEMA, 
     '.', 
     table_name, 
     ' CHANGE COLUMN ', 
     Column_name, 
     ' ', 
     Column_name, 
     ' DATETIME NULL DEFAULT NULL') 
from 
    INFORMATION_SCHEMA.COLUMNS 
where 
    table_schema = 'my_schema' 
     and data_type = 'datetime' 
    and character_maximum_length = 6 #may be numeric_precision, i don't know 

后使用exec语句,像这样:

PREPARE stmt1 FROM 'ALTER TABLE ....'; 
EXECUTE stmt1 
+0

我不得不使用datetime_precision并在查询的末尾加上分号。但是,这很像一个魅力!谢谢 – raygo 2014-11-06 18:19:01