首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    select for update和select for update wait和select for update nowait的区别

    他们三个共同点: 当使用select for update 或者select for update wait或者........session会话) update test8 set price=6 where ID=1 ?...会话二的update语句执行成功 2、select for update nowait for  update和for update nowait都会对查询到的当前结果集进行加锁,所不同的是,当有另外的会话在修改当前结果集中的数据...测试代码如下: 新建一个SQL窗口1(相当于新建一个会话) update test8 set price=3 where ID=1 更新test8表的一条数据,但是不进行commit操作 然后新建SQL...测试代码如下: 首先新建SQL窗口1(相当于新建一个会话)执行update 语句,但是不进行commit操作,那么当前数据行将被lock update test8 set price=3 where ID

    3K100

    ON DUPLICATE KEY UPDATE

    问题引出 案例:某个餐桌(id)花了多少钱(num) 如果4号餐桌点了一份西红柿4元,我们可以插入;如果3号餐桌点了一份西红柿4元,我们可以修改 你选择insert或者update的原因是你知道他原来有没有数据...一般我们的逻辑为 先查询,如果没有,插入;反之修改 if not exists (select ) insert else update 最简单直观的问题;发送两条SQL语句吧...,性能问题 解决方法 有则改之无则加勉,数据库中同样也有相似的问题,有就修改,没有就插入 ON DUPLICATE KEY UPDATE 就是解决,如果有数据就修改,如果没有数据就插入的问题 第一次执行...(数据库中没有id 为4的数据) INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;...Query OK, 1 row affected 第二次执行(数据库中有id为4的数据) INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE

    29210
    领券