MySql中IGNORE、ON DUPLICATE KEY UPDATE、DELAYED

mysql插入语句中,如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。

示例:

insert ignore into tb(...) value(...)

这样不用校验是否存在了,有则忽略,无则添加。

如果不指定ignore时,有唯一冲突时会报错。

 

 

mysql插入语句中如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。

例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;

您可以在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。
示例:

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

本语句与以下两个语句作用相同:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;
INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=9;



DELAYED调节符应用于INSERT和REPLACE语句。当DELAYED插入操作到达的时候,

服务器把数据行放入一个队列中,并立即给客户端返回一个状态信息,这样客户

端就可以在数据表被真正地插入记录之前继续进行操作了。

示例:
insert DELAYED into tb(...) value(...)

几点要注意事项:

INSERT DELAYED应该仅用于指定值清单的INSERT语句。

服务器忽略用于INSERT DELAYED...SELECT语句的DELAYED。

服务器忽略用于INSERT DELAYED...ON DUPLICATE UPDATE语句的DELAYED。


 

总结:

DELAYED做为快速插入,并不是很关心失效性,提高插入性能。

IGNORE只关注主键对应记录是不存在,无则添加,有则忽略。

ON DUPLICATE KEY UPDATE 在添加时操作,关注非主键列,注意与ignore的区别。有则更新指定列,无则添加。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值