我面临的问题是更新两个字段(说活动,版本)的所有表的长度,其中包含这两个字段(说活动,版本)在我们的数据库中。
有没有办法更新两个字段。
在MySQL中是可能的吗?
如果可能的话,请分享给我。
在谷歌之后,我找到了这个Mysql- Single Sequence Table for all Tables
谢谢
西坦苏
发布于 2018-02-14 19:21:49
通过一系列ALTER TABLE语句,简短的回答是'Yes‘。
但是,首先要备份数据库。
接下来,通过查询information_schema,您可以确信您已经确定了这些列的实例所在的所有表。就像这样
SELECT `table_name`, `column_name`, `column_type`, `column_default`, `is_nullable`
FROM `information_schema`.`columns`
WHERE `table_schema` = 'yourdbname'
AND `column_name` IN('Version','Say Active')
ORDER BY `column_name`;这将为您提供一个表的列表,并允许您查看当前的定义是否一致。
接下来,您需要为标识的每个表和列创建一些ALTER TABLE语句,以便为要更改的列提供完整的定义。如果您对mysql syntax不太满意,那么可以使用
SHOW CREATE TABLE `tablename1`; 在一个受影响的表上,并将它们复制出来,替换编辑版本中的列长度。
使用MODIFY列而不是CHANGE列语法,因为您不打算更改列名。
如果我们假设Version列的定义返回为
Version varchar(12)不为空
如果您希望将其长度加倍,则可以为每个实例创建一条ALTER TABLE语句:
ALTER TABLE `tablename1` MODIFY COLUMN `Version` VARCHAR(24) NOT NULL;
ALTER TABLE `tablename2` MODIFY COLUMN `Version` VARCHAR(24) NOT NULL; 等。
当您更新了所有表之后,您可以针对information_schema重新运行查询,以检查所有表中的两列是否都已被修改。
https://stackoverflow.com/questions/48781768
复制相似问题