创建测试表(有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都会自增变化。