一创建Unique索引
- 建立表时创建
create table user(
id int,
name varchar(200),
unique(name)
);
- 添加unique
alter table user add unique key(name)
- 删除
alter table user drop index name
创建多列unique
现在业务需求是希望username+colleage+num不能全一样,但是有一个不一样就没事
alter table stu add unique key(username,colleage,num);
重复插入相同值得解决方法
- 方案一:只想跳过,无需报错
:加 ignore关键字
insert ignore into user value...
这样mysql就会自动跳过重复的行
- 方案二:对重复的行,把除了了unique键外的键进行更新
用on duplicate key update xx=xx
insert into test values('xiao','qqqq') on duplicate key update coll='lkasd';
问题一:除了重复的值需要进行更新,还有需要新插入的值?
这一点完全不用担心,mysql会自动判断是重复了进行跟新,还是没重复而新插入
insert into test values('xiao','qwer'),('lll','hhhh')on duplicate key update coll='mmmm';
问题二:如何动态的修改非重复的值的特定行,而不是上述的指定修改?
采用Values关键字
insert into test values('xiao','aasd'),('kkkk','zzzz')on duplicate key update coll=values(coll);