草庐IT

TRANSACTIONS

全部标签

mysql - 在事务中包装 SQL 语句

我正在使用以下内容:begindbmodule.comenziQuery.SQL.Clear;dbmodule.comenziQuery.SQL.Add('INSERTINTO`r33758pi_tipotask`.`arhiva`SELECTid,data,stare,client,telefon,email,detalii,observatii,pret,livrare,user,statusFROMcomenziWHERE`id`='''+inttostr(dbmodule.comenziDataSetid.Value)+''';');dbmodule.comenziQuery.

mySQL - 表锁定与行锁定

应用说明我有一张表,其中存储了代表map上区域的ID。每张map包含1000个区域。领土是map上任意数量的相互接触的区域。用户争夺map不同区域的所有权。数据库设计目前我有一张map表、一张领土表和一张区域表。tblMaps:MapID,MapNametblTerritories:TerrID(uniquegamewide),MapID,OwnerID,Status,ModifiedtblAreas:AreaID(1-1000),TerrID目前tblAreas仅存储map中的占用区域-无论是否有人拥有它,它都不包含每张map1000条记录。当用户试图取得某些区域的所有权时,应用程序

mysql - Laravel 的回滚事务支持多态关系吗?

我有这些多态关系:staff:id-integername-stringorders:id-integerprice-integerphotos:id-integerpath-stringimageable_id-integerimageable_type-string在Controller中:publicfunctionexample(){\DB::beginTransaction();try{$staff=Staff::findOrFail(1);$row=$staff->photos()->create(['path'=>1]);$row->path=2;$row->save()

mysql - Hibernate/Spring : getHibernateTemplate(). save(...) 卡住/挂起

我将Hibernate和Spring与DAO模式一起使用(所有Hibernate依赖项都在一个*DAO.java类中)。我有九个单元测试(JUnit),它们创建一些业务对象,保存它们,并对它们执行操作;对象在哈希中(所以我一直重复使用相同的对象)。我的JUnit设置方法调用我的DAO.deleteAllObjects()调用getSession().createSQLQuery("DELETEFROM").executeUpdate()的方法对于我的业务对象表(只有一个)。我的一个单元测试(#8/9)卡住了。我推测这是一个数据库死锁,因为Hibernate日志文件最后显示了我的删除语句

java - 如何在 Java 中死锁或超时后重新启动事务?

当我们得到:(com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException:Deadlockfoundwhentryingtogetlock;Tryrestartingtransaction)OR(transactiontimesout)?我正在使用MySQL(innoDBENGINE)和Java。请帮助并链接任何有用的资源或代码。 最佳答案 当你在你的catchblock中捕捉到这种类型的异常时catch(Exceptione){if(einstanceofTr

mysql innodb事务并发

我有3张table产品产品编号max_products_can_sellmax_products_can_sell_to_individual购买用户编号产品编号数量预订产品编号用户编号数量希望您了解结构。现在,当用户尝试购买产品时,我必须检查max_products_can_sell剩余的商品-(售出数量+保留数量)。如果商品可用,我必须将其存储在预订表中,直到他购买为止。(将通过此表的cron作业进行管理)现在实际的问题是,如何在这里处理并发问题。例如:钢笔产品只有1个。两个用户请求reserve.php。“a”用户请求reserve.php并且可用笔为1。但在插入之前,“b”用户

mysql - MySQL Innodb 中的悬空事务

假设我执行了如下SQL语句:starttransaction;insertintosomeTable(userId,amount)values(33,44);请注意,此语句末尾没有Commit或Rollback。我也没有要求启用自动提交的选项。dba如何检测这种未完成的事务?我试过使用“showinnodbstatus”,但它提供了太多信息。我试图找到未提交的事务并强制它们提交或回滚。谢谢。 最佳答案 Autocommit不会在这里帮助你,starttransaction覆盖它。一旦连接超时或客户端重新连接,悬空事务将回滚,以先发生

php - 代码点火器事务

codeIgniter中的事务如何工作?我可以停止一次交易并开始另一笔交易吗?看我的例子$this->db->trans_begin();$a='UPDATE......';RETURNTRUE$b='INSERTINTO......';RETURNFALSE$this->db->trans_rollback();//Itried$this->db->trans_off();var_dump($this->db->trans_status());$this->db->trans_begin();if($this->db->trans_status()===FALSE){$this->d

mysql - 我在这里需要交易吗?

我有一个表正在收集用户输入的数据。我想执行如下SQL语句:SELECT语句1SELECT语句2更新我在2个选择语句中读出的表行我想防止其他用户在任何语句之间输入新数据的可能性。我已经阅读了MySQL手册,似乎我可以先锁定表,但我对事务更熟悉,我想知道围绕3个语句包装一个事务是否可以实现我想要的。我发现很难通过阅读手册来确定这是否有效(或者可能只有我......) 最佳答案 这里有两个可能的问题范围;事务(如果您使用的是支持事务的引擎,例如InnoDB)将解决其中一个问题。事务使您的所有查询都在事务开始时对数据库状态的快照进行操作,并

MYSQL If语句在事务中导致错误

我有以下MYSQL查询:STARTTRANSACTION;SELECTsport_idINTO@aFROMsportsWHEREsport_id=2FORUPDATE;UPDATEsportsSETsport_name='TableTennis'WHEREsport_id=@a;if(@a>1)thenCOMMIT;ELSEROLLBACK;ENDIF;问题是它在if语句中返回错误:#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyn