博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中某张表修改较大时的处理
阅读量:6954 次
发布时间:2019-06-27

本文共 3570 字,大约阅读时间需要 11 分钟。

hot3.png

项目有一个需要涉及到原来的表构的字段大部分字段都已经没用,只有少数三四个字段还有用着,另外需要增加比较多的新字段,而这张表是比较主要的一张表,其中主键被其它三四张表作为外键,而且该表的记录还需要保留,考虑了挺久用如下方式来处理

  1. 导出原来表的记录:

mysqldump -u logistics -p logistics logistics_expr_del_com> d:/temp/logistics_expr_del_com.sql

(mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名)

导出后手工整理一下sql语句(还好数据量不多)

 2. 从数据字典中查出该表被多少表所依赖

select TABLE_NAME,CONSTRAINT_NAME from `KEY_COLUMN_USAGE` t where t.REFERENCED_TABLE_NAME = 'logistics_expr_del_com';

根据查询查询出一结果整理出在drop这张表前需要删除多少外键约束,比如本表有以一四个约束关系:

113931_DPHr_914897.png

整理出的删除外键的语句为:

ALTER TABLE logistics_account_statements DROP FOREIGN KEY  Reflogistics_expr_del_com3;ALTER TABLE logistics_admin DROP FOREIGN KEY  FKF1882623B3213930;ALTER TABLE logistics_express_user DROP FOREIGN KEY  Reflogistics_express_del_com;ALTER TABLE logistics_express_user DROP FOREIGN KEY  Reflogistics_expr_del_com12;

3. 使用drop语句删除该表

drop table logistics_expr_del_com;

4. 创建新的表

CREATE TABLE logistics_expr_del_com(    id                      VARCHAR(32)       NOT NULL COMMENT '主键',    company_name            VARCHAR(64)       NOT NULL COMMENT '公司名称',    registered_address   VARCHAR(128)      NOT NULL default ' ' COMMENT '注册地址',    office_address          VARCHAR(128)      NOT NULL default ' ' COMMENT '办公地址',    scope_of_business       VARCHAR(128)      NOT NULL default ' ' COMMENT '经营范围',    business_licence        VARCHAR(128) COMMENT '营业执照',    tax_reg_certificate     VARCHAR(128) COMMENT '税务登记证',    org_code_certificate  VARCHAR(128) COMMENT '组织机构代码证',    company_phone           VARCHAR(16) COMMENT '公司联系电话',    company_fax             VARCHAR(16) COMMENT '公司传真',    company_web_site        VARCHAR(128) COMMENT '公司网址',    company_logo            VARCHAR(128) COMMENT '公司Logo',    billing_information     VARCHAR(2560) COMMENT '开票信息',    legel_name              VARCHAR(64)       NOT NULL default ' ' COMMENT '法人姓名',    legel_id_number         VARCHAR(18)       NOT NULL default ' ' COMMENT '法人身份证号',    legel_id_card_image     VARCHAR(128) COMMENT '法人身份证图片',    legel_msisdn            DECIMAL(11, 0) COMMENT '法人手机',    legel_telephone         VARCHAR(32) COMMENT '法人固定电话',    attn_name               VARCHAR(32)       NOT NULL default ' ' COMMENT '经办人姓名',    attn_id_card_image      VARCHAR(128) COMMENT '经办人身份证图片',    attn_msisdn             DECIMAL(11, 0)    NOT NULL default 0 COMMENT '经办人手机',    attn_email              VARCHAR(64)       NOT NULL default ' ' COMMENT '经办人电子邮件',    attn_telephone          VARCHAR(32) COMMENT '经办人固定电话',    attn_fax                VARCHAR(32) COMMENT '经办人传真',    create_date             DATETIME COMMENT '创建时间',    modify_date             DATETIME COMMENT '修改时间',    PRIMARY KEY (id))ENGINE=INNODB DEFAULT CHARSET=UTF8COMMENT='快递公司';

5.把第一步导出的经过整理的记录插入到新表中

INSERT INTO `logistics_expr_del_com` (id, company_name, create_date, modify_date)VALUES ('402880e64be81800014be81b30630002','ems','2015-03-05 12:04:30','2015-03-05 12:13:31'),('402880e74b3e24a7014b3e286c9d0004','顺丰','2015-01-31 12:03:31','2015-01-31 12:03:31'),('402880e74b3e24a7014b3e289b5e0005','圆通','2015-01-31 12:03:43','2015-03-05 12:14:01');

6. 重新加上外键约束(根据第二步查询出来结果可以整理出相应的sql):

ALTER TABLE logistics_account_statements ADD CONSTRAINT Reflogistics_expr_del_com3     FOREIGN KEY (expr_del_com_id)    REFERENCES logistics_expr_del_com(id);ALTER TABLE logistics_admin ADD CONSTRAINT FKF1882623B3213930     FOREIGN KEY (expr_del_com_id)    REFERENCES logistics_expr_del_com(id);ALTER TABLE logistics_express_user ADD CONSTRAINT Reflogistics_express_del_com     FOREIGN KEY (expr_del_com_id)    REFERENCES logistics_expr_del_com(id);

转载于:https://my.oschina.net/u/914897/blog/387182

你可能感兴趣的文章
Spring学习总结(6)——Spring之核心容器bean
查看>>
ubuntu重啟網卡提示"Job failed while stopping"解決方法!【参考别人的信息】
查看>>
<org manual>翻译--2.9 区块
查看>>
IOS 学习笔记 —— EGOTableViewPullRefresh使用 (一)
查看>>
一道mysql面试题
查看>>
Storefront与NetScaler的集成配置 - part3
查看>>
python virtualenv的使用
查看>>
图解Undo原理
查看>>
Mysql的几个成功故事
查看>>
在Mac上通过SourceTree管理Github
查看>>
一,二,四(1)单元练习题
查看>>
Oracle中删除用户遇到的问题
查看>>
Python操作数据库之Mongodb
查看>>
vCenter Server and ESXi Security
查看>>
Django Sendmail Errno[61] Connection Refused
查看>>
web安全
查看>>
Node.js(三)——URL模块
查看>>
coredata基础用法1(附coredata demo)
查看>>
XenApp_XenDesktop_7.6实战篇之十五:StoreFront的配置
查看>>
Tablespace Report
查看>>