MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度

翎野君發表於2024-07-10

背景

由於業務場景導致某個欄位如phone_name涉及到表比較多,目前很多表都有冗餘這個欄位,但是前期給的欄位長度只有varchar(100),不滿足目前的需要了,需要把所有的表的欄位長度都增大到varchar(255),如果手動一個個修改的話,那麼有幾百張表,很花時間,所有想到如下辦法,以做備忘。

方案

修改這些表中此欄位為必填的DDL語句

SELECT
concat("ALTER TABLE `",table_name,"` MODIFY COLUMN `phone_name`  varchar(255)  NOT NULL COMMENT '手機名稱';")
FROM information_schema.columns
WHERE
table_schema = 'db_lingyejun' and column_name='phone_name' and character_maximum_length < 255 and is_nullable = 'NO';

修改這些表中此欄位可為空的DDL語句

SELECT
concat("ALTER TABLE `",table_name,"` MODIFY COLUMN `phone_name`  varchar(255)  DEFULT NULL COMMENT '手機名稱';")
FROM information_schema.columns
WHERE
table_schema = 'db_lingyejun' and column_name='phone_name' and character_maximum_length < 255 and is_nullable = 'YES';

  

本篇文章如有幫助到您,請給「翎野君」點個贊,感謝您的支援。

首發連結:https://www.cnblogs.com/lingyejun/p/18293068

相關文章