insert ignore、insert和replace

创建测试表(有PrimaryKey,或者unique索引,如表id设置了自增时):

CREATE TABLE citys(
    id INT(10) PRIMARY KEY AUTO_INCREMENT,
    city_name VARCHAR(255) UNIQUE,
    provincial VARCHAR(255)
);

 插入测试数据

INSERT INTO citys(city_name,provincial) value('hangzhou','zhejiang');
INSERT INTO citys(city_name,provincial) value('wenzhou','zhejiang');
INSERT INTO citys(city_name,provincial) value('lanzhou','ganshu');

 

a、测试insert当存在city_name字段的记录时返回报错

 报错原因是有唯一索引不允许存在相同记录字段

b、测试insert,insert ignore,replace的效果

INSERT INTO citys(city_name,provincial) value('hangzhou','zhejiang');
INSERT IGNORE INTO citys(city_name,provincial) value('hangzhou','zhejiang');
REPLACE INTO citys(city_name,provincial) value('hangzhou','zhejiang');

 

 


insert    是直接插入数据,当唯一索引冲突时会报错  
insert ignore    如有对应唯一字段存在会忽略不插入数据,不会报错。
replace    替换插入数据
注意:三种方式都会让发生自增,id都会自增变化。

原文地址:https://www.cnblogs.com/uphold/p/15707067.html