mysql replace 和replace into使用

最近听别人介绍mysql实现发号器功能,使用的是replace into。之前经常使用是replace,并不知道replace into做什么用。了解下

  1. replace是mysql 里面处理字符串比较常用的函数,可以替换字符串中的内容。类似的处理字符串的还有trim截取操作,这里就不在多说。
  2. replace into 主要作用类似insert插入操作。主要的区别是replace会根据主键或者唯一索引检查数据是否存在,如果存在就先删除在更新。

例子:

#表结构:
CREATE TABLE `t_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(1) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

插入第一条记录

INSERT INTO t_test (`name`)VALUES('a')
#或者
REPLACE INTO t_test (`name`)VALUES('a')

采用上面的方式插入二条记录,insert into 会提示错误:1062 - Duplicate entry ‘a’ for key ‘idx_name’, Time: 0.001000s。使用replace into则会正常执行,只是id自增长1。
ps: replace into 中into关键字可以省略的,看起来一样,使用有点区别

如果你也喜欢旅行可以看下这里,自己的旅行网站,记录我们的一些旅行经历和大家分享,希望你可以喜欢:https://www.lanlianhua.org/

你可能感兴趣的:(mysql)