MySQL中unique列上插入重复值解决办法

   当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ONDUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。

1.新建一张测试表tbtest,包含三个字段:

   create table tbtest(

   id tinyint(4) not nullauto_increment,
   title varchar(10) null,

   content varchar(30)null,

   uniquekey(id)); 
MySQL中unique列上插入重复值解决办法


2.为新增的表tbtest中增加数据并确认插入的数据:

   insert intotbtest(title,content) 
    values('Monday','Today is Monday');
   insert intotbtest(title,content) 
    values('Tuesday','Today is Tuesday');
   insert intotbtest(title,content) 
    values('Wednesday','Today is Wednesday!');
   insert intotbtest(title,content) 
    values('Thursday','Today is Thursday');

 

   select * from tbtest;
MySQL中unique列上插入重复值解决办法
MySQL中unique列上插入重复值解决办法


3.在unique列上插入一条违背该约束的数据,MySQL会中断操作并提示出错信息:

   insert intotbtest(id,title,content) 
   values(3,'Sunday','Aha,Todayis Sunday!');
MySQL中unique列上插入重复值解决办法


4.在insert语句中增加关键字ignore,当解析发现该语句违背了unique约束,MySQL不会尝试去执行这条语句,自然也不会返回出错信息。这样当有很多的insert语句需要顺序执行的时候,关键字ignore的加入就会使操作变得十分的简单,他可以保证无论哪一个insert语句中碰到这种重复键值时都会跳过它,执行下一个的insert,这样就不会出现放弃或中断insert操作的情况。

   insert ignore intotbtest(id,title,content) 
   values(3,'Sunday','Aha,Todayis Sunday!');MySQL中unique列上插入重复值解决办法

 

5.利用了ignore可以忽略这些重复键值的操作,如果当很多insert语句顺序执行的目的是当发现存在重复键值就进行相应的更新旧记录操作的时候,我可以利用ONDUPLICATE KEY UPDATE从句来实现,从而制定新值:

   insert intotbtest(id,title,content) 
   values(3,'Sunday','Aha,Todayis Sunday!')
   on duplicate key updatetitle='Sunday',content='Aha,Today is Sunday!';

MySQL中unique列上插入重复值解决办法


6.查看结果。原来的Wednesday已经被update为Sunday了!
MySQL中unique列上插入重复值解决办法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值