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=0;
SET FOREIGN_KEY_CHECKS=0;

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

Mysql如何向存在外键的数据表中插入数据的更多相关文章

  1. 向mysql数据表中插入数据失败的原因

    1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...

  2. 触发器修改后保存之前的数据 表中插入数据时ID自动增长

    create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...

  3. (笔记)Mysql命令insert into:向表中插入数据(记录)

    insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...

  4. Mysql命令insert into:向表中插入数据(记录)

    insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...

  5. 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。

    标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报  分类: mysql(1)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  6. Hive通过查询语句向表中插入数据注意事项

    最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...

  7. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  8. 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

    使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...

  9. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

随机推荐

  1. 将公司的主要项目从eclipse迁移到android studio for mac环境(2)

    1.将eclipse 的 代码迁移到android studio的过程中,现在已经有了一个未优化版本能够在android studio使用,这时候,只需要将已优化版本的代码中的libs  res  s ...

  2. HDU1003 简单DP

    Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...

  3. zorka源码解读之Instrument实现原理

    主要用到三方面技术: beanshell来实现可扩展:告诉zorkaAgent插桩的具体需求,包括插桩的方法和值.插桩的时机.插桩追踪记录方式等. Instrument来通过代理的方式访问JVM,实现 ...

  4. PHP图片裁剪类

    <?php class ImageTool { //以宽为标准,如果小于宽,则不剪裁 public static function thumb_img_by_width($src_path, $ ...

  5. [转载]Grunt插件之LiveReload 实现页面自动刷新,所见即所得编辑

    配置文件下载  http://vdisk.weibo.com/s/DOlfks4wpIj LiveReload安装前的准备工作: 安装Node.js和Grunt,如果第一次接触,可以参考:Window ...

  6. JDBC、JTA、Spring的事务管理

    Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么 ...

  7. ThinkPHP 错误: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

    在配置了ThinkPHP 的数据库配置信息后,在实例化Model(),调用相关方法时候 出现错误,改进如下方式后解决: 找到php.ini 的文件,打开扩展  php_pdo_mysql.dll ,然 ...

  8. Lua输入输出库

    1.简单模型 )1.io.write函数: 函数模型为io.write(...) )2.io.read函数: io.read(“*all”) 读取当前输入的整个文件 io.read(”*line“) ...

  9. WPF整理-为User Control添加依赖属性

    依赖属性 ".NET properties are nothing more than syntactic sugar over set and get methods." 我们知 ...

  10. HTML5 history新特性pushState、replaceState

    DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退. 从HTML5开始,我们可以开始操作这个历史记录堆栈. 1.Histo ...