Mysql replace into实现存在则更新不存在则插入
CREATE TABLE `replace_test` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`uid` VARCHAR(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uid_unique` (`uid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
SELECT * FROM replace_test;
DROP TABLE replace_test;
INSERT INTO replace_test (id,NAME,uid) VALUES(1000,'jerry','hello');
INSERT INTO replace_test (id,NAME,uid) VALUES(1001,'jesses','world');
REPLACE INTO replace_test (id,NAME,uid) VALUES(1003,'marry','hey');
REPLACE INTO replace_test (id,NAME,uid) VALUES(1003,'jay','kafka');
REPLACE INTO replace_test (id,NAME,uid) VALUES(1004,'kibana','kafka');
REPLACE INTO replace_test (id,NAME,uid) VALUES(1004,'ad','kafka');
综上所述,总的来说replace INTO 操作的结果是:
首先会判断是否存在冲突,主键冲突或者唯一约束冲突。 然后删除这些数据,然后再插入数据。删除数据后插入的效果就跟insert into是一样的。