zoukankan      html  css  js  c++  java
  • Mysql如何向存在外键的数据表中插入数据

    1、创建表

    CREATE TABLE `trn_comment_msg` (
      `comMsgId` int(11) NOT NULL AUTO_INCREMENT COMMENT '评论消息主键',
      `msgId` int(11) NOT NULL COMMENT '消息ID',
      `comId` int(11) NOT NULL COMMENT '课程评论ID',
      `createUserId` int(11) NOT NULL COMMENT '消息创建人Id',
      PRIMARY KEY (`comMsgId`),
      KEY `fk_comMsg_msg_idx` (`msgId`),
      KEY `fk_comMsg_com_idx` (`comId`),
      KEY `fk_trn_comment_msg_vs_usr_user_info_idx` (`createUserId`),
      CONSTRAINT `fk_comMsg_com` FOREIGN KEY (`comId`) REFERENCES `trn_course_comment` (`comId`) ON DELETE CASCADE ON UPDATE NO ACTION,
      CONSTRAINT `fk_comMsg_msg` FOREIGN KEY (`msgId`) REFERENCES `sys_msg` (`msgId`) ON DELETE CASCADE ON UPDATE NO ACTION,
      CONSTRAINT `fk_trn_comment_msg_vs_usr_user_info_on_createUserId` FOREIGN KEY (`createUserId`) REFERENCES `sys_user` (`userId`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8 COMMENT='评论消息表';

    2、新增列

    ALTER TABLE `trn_comment_msg` 
    ADD COLUMN `content` VARCHAR(1000) NOT NULL COMMENT '消息内容' AFTER `createUserId`,
    ADD COLUMN `courseName` VARCHAR(20) NOT NULL COMMENT '课程名称' AFTER `content`;

    3、历史数据迁移

    -- trn_course_comment历史数据迁移
    update trn_comment_msg tcm
    inner join trn_course_comment tcc on tcm.comId=tcc.comId
    inner join trn_course tc on tc.courseId=tcc.courseId
    set tcm.content=tcc.content,tcm.courseName=tc.courseName

    4、新增数据

    1、向trn_course_comment表新增数据,必须保证其关联的外键表`trn_course_comment`,`sys_msg`,`sys_user`中的comId,msgId,userId存在trn_course_comment表要新增的数据,否则报外键异常

    2、暂时关闭外键约束,新增数据后在打开

    SET SQL_SAFE_UPDATES=0SET FOREIGN_KEY_CHECKS=0;

    注意此方案插入数据时可能会存在含有外键约束的字段数据不匹配的情况

  • 相关阅读:
    15 反转链表
    八大排序算法总结(2)
    八大排序算法总结(1)
    22从上往下打印二叉树
    19顺时针打印矩阵
    20包含min函数的栈
    SpringMVC-Mybatis整合和注解开发
    优雅的代码之选择不同支付方式
    利用freemarker+SAX解析xml的方式对excel文件字段校验
    pl/sql编程语言
  • 原文地址:https://www.cnblogs.com/Mrpopo/p/6088634.html
Copyright © 2011-2022 走看看