2014-11-06 162 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