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=0;
SET FOREIGN_KEY_CHECKS=0;
注意此方案插入数据时可能会存在含有外键约束的字段数据不匹配的情况
Mysql如何向存在外键的数据表中插入数据的更多相关文章
- 向mysql数据表中插入数据失败的原因
1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
- (笔记)Mysql命令insert into:向表中插入数据(记录)
insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...
- Mysql命令insert into:向表中插入数据(记录)
insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...
- 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。
标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报 分类: mysql(1) 版权声明:本文为博主原创文章,未经博主允许不得转 ...
- Hive通过查询语句向表中插入数据注意事项
最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据
使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
随机推荐
- iOS 设置1像素的UIView线
如果是代码实现,直接 在CGRectMake里把对应的参数设置为: 1.0/[UIScreenmainScreen].scale 即可. 如果是用xib实现,就需要将对应的限制拖一个I ...
- mysql like 贪婪匹配 同时匹配多个值
LIKE "%a%b%c%",这样匹配出的就是包含a,b,c三个关键词的记录 (三个关键词不在一起时) 不好用 mysql> select count(1) from dm ...
- ZeroMQ接口函数之 :zmq_term - 终结ZMQ环境上下文(context)
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_term zmq_term(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_term - 终 ...
- Android-studio开发 快捷键
这会儿正在学android开发,使用的是Android-studio 记录一下开发工具默认的 快捷键
- Django 基本命令
1. 新建一个 django project django-admin.py startproject project-name 一个 project 为一个项目,project-name 项目名称, ...
- Canvas 实现七彩喷泉
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- FileOutputStream和FileInputStream的用法
public static void show() { File f=new File("d:"+File.separator+"1.txt"); FileOu ...
- 解决Win10图片打开方式没有“Windows照片查看器”问题
1.打开注册表编辑器(Win+R,Regedit),定位至(建议修改前备份注册表): HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...
- js事件模型与自定义事件
JavaScript 一个最简单的事件模型,需要有事件绑定与触发,还有事件删除. var eventModel = { list: {}, bind: function () { var args = ...
- Java 获取汉字拼音的方法
package lius.util; import java.io.Serializable; import java.util.ArrayList; public class JString ...