





















有这么一种场景:
如果使用ORM来表述的话,则比较长,而且会出现并发问题,即多个提交时,假设设置了唯一索引的情况下,会发生数据冲突,然后 就会隔三差五收到错误:duplicate key ‘xxx’。
因此使用MySQL提供的 INSERT ... ON DUPLICATE KEY UPDATE 语句,这是MySQL的扩展语法,因此也就意味着,使用了这个语句之后,
数据库基本上就被绑定在MySQL上了,不过没有关系,一般谁会轻易更换数据库呢?
这个语句的语法是这样的:
INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1, b=4;
分三段来理解:
INSERT INTO <table>(col1, col2, ...) VALUES (val1, val2, ...)ON DUPLICATE KEY,表示后面的语句是当数据有冲突的情况下会执行的UPDATE a=1, b=2注意,由于有 ON DUPLICATE KEY,也就是说必须得有字段会发生冲突。什么属性的字段能冲突呢?
把代码使用这个语句之后,世界都安静了 :-)
参考资料:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。