数据库在插入是遇到主键冲突2020-07-01

数据库在插入是遇到主键冲突2020-07-01,第1张

在插入数据的时候,有时候会遇到主键(唯一键)冲突的情况。下面讲述两种解决办法:

第一种方法:

第二种方法:

system表空间:含数据字典信息

sysaux表空间:存储各种oracle应用的元数据(如AWR的 *** 作数据)

on duplicate key update

格式:insert into 表名(字段1,字段2)values  (值1,值2) on duplicate key update 字段=新值

作用:1、有唯一索引或主键冲突的数据插入时,只执行update后面的语句,更新指定字段的值

2、当无冲突数据插入时,就直接插入

例子:

insert into idoxu(id,stu_id,c_name) values (2,2,"huhu"),(7,7,"aha") on duplicate  key update c_name="huhu2"

执行后

replace

作用:1、有唯一索引或主键冲突的数据插入时,将删除以前的老数据,插入新的数据。如果新插入的数据中字段不全,则设为默认值,无默认值则为null(例子中istester字段,grade字段都设定了默认值为60)

2、当无冲突数据插入时,就直接插入(跟on duplicate  key update 一致)

replace into idoxu(id,stu_id,c_name) values (2,2,"huhu_replace"),(8,8,"enheng")

更新前:

执行后:

解决第16天0412作业(造数据 ,把istester表的所有数据,插入到 idoxu表)

使用on duplicate key update

insert into idoxu(id,stu_id,c_name) select id,id,uname from istester on duplicate key update c_name="new"

执行后

使用replace into

replace into idoxu(id,stu_id,c_name) select id,id,uname from istester

执行后

楼主您好:

首先要避免外键约束的冲突,查看要 *** 纵的表是否引用了其他表的主键。

其次查看是否使用了不存在的属性。

最后还要考虑数据库是否被使用中。

尽力而为,希望满意。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10829816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存