INSERT 语句

INSERT … ON DUPLICATE KEY UPDATE

MySQL 数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的唯一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。

如果一个表中既有 primary key 又有unique 索引, 仅仅是 pk 生效

影响

  • 如果是插入操作,受到影响行的值为1;
  • 如果更新操作,受到影响行的值为2;
  • 如果更新的数据和已有的数据一样(就相当于没变,所有值保持不变),受到影响的行的值为0
阅读更多