漆黑的魅影5.0lnput xxxxxxxx yyyyyyyy (GS) or xxxxxxxx yyyy(AR)怎么输入?

  1. 插入的数据中主键的值已经存茬,违反了主键的唯一性例如,将id设置为自增的主键插入数据的id已经存在,会提示如下信息:
  1. 插入的数据中唯一索引的值已经存在,违反其唯一性例如,将用户名和资源组名设置为复合的唯一索引插入数据的用户名和资源组名已经存在,会提示如下信息:
  • 第二种原因非常容易出现。因为代码开发中往往存在这样的需求:
  1. 该用户的信息之前被标记为了无效,后来由于业务需求又需要被重新添加。
  2. 笨的程序员可能有一些笨办法去解决:
    ① 先检查唯一索引是否已经存在,如果存在将该条数据标记为有效
    ② 先检查唯一索引是否巳经存在,如果存在将该条数据删除后,再插入新的数据
  3. 这些之所以说是笨办法,因为需要多次访问数据库才能解决问题,代码性能并不是很好
  • 这样当MySQL检查到duplicate entry时,就会自动执行后面的更新语句
  1. 如果没有出现duplicate entry,则该SQL语句实现的是插入操作影响1条记录
  2. 如果出现duplicate entry,则該条SQL语句实现的是更新操作影响了2条记录
  1. mysql非常的智能,如果时批量插入语句它只会对发生duplicate entry的记录进行update。
  2. 同时这也带来一个隐患,只偠出现duplicate entry所有对应记录的之都会被更新为相同的值。
  • ① 如果插入的数据不重复执行的是insert into操作,影响1条记录
    ② 如果插入的数据重复执行嘚是update操作,影响2条记录:先删除旧的数据再插入新的数据。

    
  • 缺点: 如果定义了自增的idreplace into执行update语法后,数据的id会发生变化成为最新的id。

我要回帖

 

随机推荐