首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在事务处理期间删除的记录

在事务处理期间删除的记录
EN

Stack Overflow用户
提问于 2014-09-25 00:39:40
回答 4查看 797关注 0票数 1

我有一个每秒处理许多查询的系统。我用mysqlPHP对我的系统进行编码。

我的问题是mysqli事务仍然提交事务,即使记录被其他用户同时删除,我的所有表都使用InnoDB

下面是我使用mysqli编写事务代码的方式:

代码语言:javascript
运行
AI代码解释
复制
mysqli_autocommit($dbc,FALSE);
$all_query_ok=true;

$q="INSERT INTO Transaction() VALUES()";
mysqli_query ($dbc,$q)?null:$all_query_ok=false;

$q="INSERT INTO Statement() VALUES()";
mysqli_query ($dbc,$q)?null:$all_query_ok=false;

if($all_query_ok==true){
    //all success
    mysqli_commit($dbc);
}else{
    //one of it failed , rollback everything.
    mysqli_rollback($dbc);
}

下面是另一个用户同时在其他脚本中执行的查询,最后会破坏预期的系统行为,

代码语言:javascript
运行
AI代码解释
复制
$q="DELETE FROM Transaction...";
mysqli_query ($dbc,$q)?null:$all_query_ok=false;

请指正,我是不是把交易搞错了?我读过关于行级锁定的文章,并相信innoDB确实在事务期间锁定了记录。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-23 22:15:32

我对行级锁定进行了一些研究,它可以从删除或更新中锁定记录。

更新 正式文件

开始事务处理之后,我必须选择我想要锁定的记录,如下所示

代码语言:javascript
运行
AI代码解释
复制
SELECT * FROM Transaction WHERE id=1 FOR UPDATE

这样,记录将被锁定,直到transaction end

此方法不适用于MyISAM类型表

票数 1
EN

Stack Overflow用户

发布于 2014-09-25 00:50:11

我不知道您说的是哪类事务,但是在使用mysqli扩展时,我使用以下方法来处理事务:

然后这个过程就像:

  1. 使用mysqli::begin_transaction启动新事务
  2. 执行SQL查询
  3. 在成功时,使用mysqli::commit确认第2步中的查询所做的更改,或者在执行第2步的查询时出现错误时的,使用mysqli::rollback恢复它们所做的更改。

您可以将事务视为查询的临时缓存。这在某种程度上类似于PHP中带有ob_*函数的输出缓存。只要您没有刷新缓存的数据,屏幕上就不会发生任何事情。事务处理也是如此:只要您没有完成任何操作(并且关闭了自动提交),数据库中就不会发生任何事情。

票数 2
EN

Stack Overflow用户

发布于 2014-10-26 14:58:35

看起来像是种族条件的一个典型例子。您可以并行执行两个并发脚本来修改数据。可能您的第一个脚本成功地插入了记录并提交了事务,第二个脚本随后成功地删除了记录。不过,我不知道您所说的“其他用户同时在其他脚本中执行的查询”是什么意思。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26034102

复制
相关文章
追洞小组 | Jdbc反序列化漏洞复现浅析
很多时候我们获得密码之后进入后台管理的界面,有些上传的漏洞或者sql注入无法getshell,但是如果发现连接mysql服务的数据包中可以传参,那么我们就可以尝试控制连接mysql服务器,反序列化代码来得到shell。所以该漏洞的关键只需要能够控制客户端的jdbc连接,在连接阶段就可以进行处发反序列化。这篇文章也不深入理解mysql的协议。使用idea maven项目创建,在pom中导入jdbc的坐标。(5版本的在5.1.40以下,8版本的在8.0.20以下)导入之后在右边点击maven图标导入。
Ms08067安全实验室
2021/05/11
2.9K0
追洞小组 | Jdbc反序列化漏洞复现浅析
Jackson 反序列化 Map 集合
仅仅使用 objectMapper.readValue(xxxxx, Map.class) 时,如果原始集合使用了泛型,idea会给出警告 未检查的赋值: 'java.util.Map' 赋值给 'java.util.Map<java.lang.String,java.lang.String>'
MashiroT
2022/10/28
8870
Winform 后台将指定的控件集合添加到制定容器中
1 /// <summary> 2 /// 把按钮按照行数分割排列 3 /// </summary> 4 /// <param name="ControlArry">按钮集合</param> 5 /// <param name="control_parent">父容器</param> 6 /// <param name="RowCount">每一行数量</param> 7 ///
FreeTimeWorker
2020/08/31
2.4K0
将Array、Dictionary等集合类的序列化和反序列化
Objective-C的集合类序列化到文件中或者从文件中反序列化其实很简单,请看下面的示例代码:
EltonZheng
2021/01/26
4400
追光效果
追光效果是在舞台全场黑暗的情况下用光柱来突出角色或其他特殊物体,还可以通过操控光源来跟随人物移动。追光效果主要用来突出角色主体以及主体和环境的关系,在游戏中可以用来营造沉浸式氛围以及聚焦玩家视线焦点
异名
2020/06/09
7710
“面试不败计划”:集合、日期、异常、序列化、其他知识点
关于集合 思考题:1、Java中的集合及其继承关系 思考题:希望大家积极的思考,并且可以踊跃的说出自己的想法,想法不管对与错,只要说出来就是一种提高,所以,希望小伙伴们可以把自己的想法在留言区给出,这
好好学java
2018/07/02
9000
python中使用traceback来追
test2.py中,用try..except捕获异常,然后traceback.print_exc()打印。
py3study
2020/01/09
5410
追源码的平凡之路
在斯坦福大学, 乔布斯做了一场我认为他最精彩的演讲之一 (另一场可能是iphone的问世发布会)。他讲了第一个故事 "connecting the dots"
勇哥java实战
2022/07/27
7790
追源码的平凡之路
【重磅】亚马逊砸137亿美元收购全食,AI吞噬世界让对手追无可追
【新智元导读】亚马逊昨夜宣布将以137亿美元收购全食超市(Whole Foods),这是亚马逊成立以来最大一笔收购,被认为是亚马逊拓展线下业务和实体零售渠道的一个重要步骤。分析人士认为,亚马逊重金收购线下零售商的一大原因是看中了数据和分发渠道的价值。联想到去年亚马逊惊艳发布线下无人超市Go,2017年众多知名零售商店纷纷关门的浪潮下,亚马逊似乎正在发起一场从线上到线下的整合运动,大有横扫之势。在零售业,贝索斯和他的亚马逊很快会建立起真正的帝国。 6月16日晚,亚马逊宣布将以约137亿美元收购全食超市(Who
新智元
2018/03/28
9010
【重磅】亚马逊砸137亿美元收购全食,AI吞噬世界让对手追无可追
Hexo哔哩哔哩追番
Github:https://github.com/XiaoLFeng/hexo-bilibili-bangumi-butterfly
筱锋xiao_lfeng
2022/03/16
4K0
IDEA 2022.1 重磅发布!追不动了~
IntelliJ IDEA 2022.1 正式发布了,熟悉我的朋友都知道,我通常都会第一时间更新到最新版本的。不过,这次我不太想追新版了,有点累,不想折腾了。我目前用的 2021.x 版本已经完全可以满足我的个人开发需求的。除非 2022 有更加里程碑式的新版本,我才会考虑更新一波。
乔戈里
2022/05/21
2.6K0
IDEA 2022.1 重磅发布!追不动了~
Celery增加到Systemd配置
Celery定时任务的启动依赖于命令,有时需要指定很多的参数,造成很长的命令.如果重启服务器等,就需要重新用命令启动.这个时候问题就来了,重启服务器的人不知道命令怎么办?或者说定时任务有好几个,其中有
Python碎片公众号
2021/02/26
8740
Celery增加到Systemd配置
flutter添加到android原生
1.创建一个flutter module flutter create -t module --org com.example my_flutter 2.在原生build.gradle下 android { //... compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } } 3.添加Flutter模块作为依赖项 有两种方式 ######(1)无需安装flutter sdk Flutter库打包为由A
程序员小何SS
2021/12/29
1.1K0
23-狼追兔子问题
思路 环形遍历数组,要对下标取数组长度的模,防止越界 代码 #include <stdio.h> #include <string.h> #define N 10 int main() { int i = 0; int f[N] = {0}; // 1 3 6 10 15 21 int d = 0; for (i = 0; i < N; i++) { f[d] = 1; d++; d += i; d
lexingsen
2022/02/25
3270
[ISUX转译]设计追波风 - 腾讯ISUX
前言 13年底,Intercom 的产品VP Paul Adams 在 Intercom 官博发表了 一篇博文 。文章讲述了网络上设计社区里普遍存在的一种现象,大意是“许多设计师在社区中分享的作品往往是为了炫技,而产品的逻辑通常都经不起推敲的,真正优秀的设计应该从更高的层面出发,而不只是做表面上的工作”。 文章发布后,在 Twitter 、HN 及博客评论下引起了反响。虽然部分内容在一些设计师眼里看起来比较有攻击性(也就是俗称“开喷”),甚至还带有些地图炮,但是文中关于“设计的四个层次”以及“when..I
腾讯ISUX
2018/06/29
6910
用发展的眼光追技术
YII2 这个框架是 PHP 语言生态下的一款 Web 应用框架。有过 PHP 开发经验的开发者都不会陌生,或多多少都听说过,熟悉,至少接触过。
needrunning
2020/03/04
1.5K0
Typecho博客添加追番页面
Typecho博客添加追番页面 预览页面: https://blog.catdog007.icu/bilibili.html 下载插件 啥都不说,有git的直接 git clone https://g
meowrain
2021/04/22
1.1K0
Typecho博客添加追番页面
【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以 直接获取 List 集合中的元素 ;
韩曙亮
2023/03/30
6.3K0
【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
求1加到100的总和
数学上有一个公式可以计算前n个自然数的和: ( \frac{n(n + 1)}{2} )。对于这个问题,n是100,所以我们可以直接使用这个公式来计算和。
777nx
2023/10/18
2970
点击加载更多

相似问题

加工中的狼追羊

13

java.lang.NoSuchMethodError在Cloudbees追我

11

无法序列化集合集合

12

是否可以将属性添加到序列化集合中?

10

集合的序列化

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档