首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql的INSERT ... ON DUPLICATE KEY UPDATE

在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert操作; 这个操作可以在业务层做,也可以在数据库层面做; 业务层一般做法先查询...数据库层mysqlINSERT ... ON DUPLICATE KEY UPDATE就可以做这个事情,并且原子性操作 二、INSERT ......ON DUPLICATE KEY UPDATE命令 2.1单条记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE...c=c+1; 如上sql假如t1表的主键或者UNIQUE 索引a,那么当执行上面sql时候,如果数据库里面已经存在a=1的记录则更新这条记录的c字段的值为原来值+1,然后返回值为2。...2.2多记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

MysqlINSERT ... ON DUPLICATE KEY UPDATE的实践

在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert操作; 这个操作可以在业务层做,也可以在数据库层面做; 业务层一般做法先查询...数据库层mysqlINSERT ... ON DUPLICATE KEY UPDATE就可以做这个事情,并且原子性操作,本文就来讲解的使用。 二、INSERT ......ON DUPLICATE KEY UPDATE命令 2.1单条记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE...c=c+1; 如上sql假如t1表的主键或者UNIQUE 索引a,那么当执行上面sql时候,如果数据库里面已经存在a=1的记录则更新这条记录的c字段的值为原来值+1,然后返回值为2。...sql字符串大小有限制,我本机的mysql上执行show VARIABLES like '%max_allowed_packet%';结果为max_allowed_packet为4M: ?

2.2K30

mysql DUPLICATE KEY UPDATE 问题

DUPLICATE KEY UPDATE batch执行时出死锁错误 背景知识 一、 mysql  insert 与 duplicate key: 典型的插入语句: 多条:INSERT INTO tablename...'PRIMARY' 如果数据库已有某条数据,以下的两条语句可等同: INSERT INTO tablename (id, data) VALUES (1, 10) ON DUPLICATE KEY...因为Innodb 类型的表按照主键的顺序保存的,所以将导入的数据按照主键的顺 序排列,可以有效的提高导入数据的效率。...Delayed 的含义让insert 语句马上执行,其实数据都被放在内存的队列,并没有真正写入磁盘;这比每条语句分别插入要快的多;LOW_PRIORITY 刚好相反,在所有其他用户对表的读写完后才进行插入...貌似mysql有这个bug(http://bugs.mysql.com/bug.php?

3.2K50

FlutterKey

---- 在使用 Flutter 时,我们经常会遇到一个叫做 Key 的东西。Key Flutter 几乎所有 widget 都具有的属性。但它并不常用而容易被忽视。...这意味着 Key 分配给 Widget 的唯一标识,通过 key 可以与其他 Widget 区分开来。对于 Widget 在 Widget 树改变位置的情况,Key 帮助保留它们的状态。...如果无状态的 widget 则不需要设置 key。 背后原理 刚刚第二种实现,使用 key 的代码实现预期的行为。为什么 key 可以做到这一点呢?让我们来找出答案。...== newWidget.key; } 在本例,原色块 A 和 B, 交互后 oldWidget = A newWidget = B 因为 A 和 B 同类型 StatelessColorTiles...键类型 Key 一般分两种类型: 本地类型 全局类型 本地键 在拥有相同父元素的元素必须独特的。本地键可以进一步分类如下: 比如同一个父节点下的孩子节点之间独特存在的。

1.4K10

为什么 key 必须的?

之前有说到,在 React 渲染列表的时候,要给每一个数据加一个 key 值,赋予一个确定的标示,而且也详细描述了如何给一个标示,方法知道了,那么为什么要这么做呢?...'0' key 的元素新元素,带着 '1' 以及 '2' key 的元素仅仅移动了。...现实场景,产生一个 key 并不困难。...这个 key 不需要全局唯一,但在列表需要保持唯一。 最后,你也可以使用元素在数组的下标作为 key。这个策略在元素不进行重新排序时比较合适,如果有顺序修改,diff 就会变得慢。...由于组件实例基于它们的 key 来决定是否更新以及复用,如果 key 一个下标,那么修改顺序时会修改当前的 key,导致非受控组件的 state(比如输入框)可能相互篡改导致无法预期的变动。

73620
领券