草庐IT

TRANSACTIONS

全部标签

mysql - 我可以在 MySQL 触发器中使用类似事务的功能吗

我有一个插入触发器,它从表A的行中获取一组列值,并将其中一些插入表B并保留在表C中。我需要这个操作是一个事务,其中如果数据出现错误插入到表B而不是C,整个插入操作应该回滚。我研究了手册,它在this的最后说触发器中不允许事务的页面有没有办法在mysql中实现我想要的。 最佳答案 是的,你可以,但你如何做取决于你的版本。首先,触发器本身是事务性的;在您的情况下,您有一个插入触发器可以执行两个进一步的插入。如果其中之一失败,您将获得想要的效果。考虑以下示例:CREATETABLEa(colAINT);CREATETABLEb(colBI

php - NOW() for DATETIME InnoDB Transaction guaranteed?

在单个InnoDB事务的2+个查询中使用NOW()是否保证插入的日期时间值在数据库中是准确的?换句话说,即使您在使用它的单个事务中有超过20个查询,NOW()是否总是相同,还是会改变? 最佳答案 Apparentlyitisnotguaranteed跨事务但可以从语句更改为语句。有一个解决方法可以使用asshownhere:BEGIN;SELECT@now:=NOW();INSERT...VALUES(...,@now,...);INSERT...VALUES(...,@now,...);UPDATE...@now...;COMMI

mysql - InnoDB 优化 - "use transactions when doing updates"- 为什么?

我正在阅读thispost在MySQL性能博客上。在应用程序调整下它说:Firstmakesureyou’reusingtransactionswhendoingupdates我目前只在同时有多个插入或更新的地方使用事务。即不止一张table。因此,我是否应该更改每个UPDATE以将其更改为事务?有什么区别:preparesqlbindparamscommit和:begintransactionpreparesqlbindparamsexecutestatementcommittransaction就数据库级别发生的事情而言,这使得一个比另一个更快? 最佳答

mysql - Spring、Hibernate、MySQL - 事务如何工作 - 结论/问题**

我使用SpringFramework3.0.5、Hibernate3.6和MySQLServer5.1。我有一些关于事务管理的一般问题。我个人从spring开始使用声明式事务管理。如果您能用是/否(或正确/不正确)回答我的问题,并且在必要时提供简短的解释,那就太好了。如果有不同的意见,如果几个人一起回答就好了。谢谢:-)1)你说这句话是否正确:ADBMS负责事务及其行为的一般实现。1)B)也许更好的说法是:DBMS负责事务的一般实现和数据库的行为(例如,当事务回滚时)。2)Hibernate只使用数据库连接。它需要事务,但它不配置任何(!)有关事务及其行为的设置。3)但是:为了使用事务

java - 数据源的自动提交是否应该设置为 false?

请看springDataSourceTransactionManager.java中的注释,函数doBegin://Switchtomanualcommitifnecessary.ThisisveryexpensiveinsomeJDBCdrivers,//sowedon'twanttodoitunnecessarily(forexampleifwe'veexplicitly//configuredtheconnectionpooltosetitalready).if(con.getAutoCommit()){txObject.setMustRestoreAutoCommit(true

java - 使用 Spring 和 Hibernate 长时间运行事务?

我要解决的根本问题是运行一个在MySQL中生成多个临时表的任务,这些临时表需要保留足够长的时间才能在创建后从Java中获取结果。由于涉及的数据量大,任务必须分批完成。每个批处理都是对通过JDBC调用的存储过程的调用。对于大型数据集,整个过程可能需要半小时或更长时间。为了确保对临时表的访问,我在一个带有TransactionCallbackWithoutResult的Spring事务中运行整个任务,从头到尾。否则,我可能会得到一个无法访问临时表的不同连接(在我将所有内容包装在事务中之前偶尔会发生这种情况)。这在我的开发环境中运行良好。但是,在生产中我遇到了以下异常:java.sql.SQ

php - 如果 PHP 的 mysql 扩展据说不支持像 mysqli 这样的事务,为什么我看到人们使用它进行在线事务?

我正在阅读有关mysql事务的文章,我的印象是您必须使用mysqli或PDO才能创建事务。但是,我在整个堆栈交换和其他站点示例中都看到了这样使用mysql扩展的示例:mysql_query("STARTTRANSACTION");$rollback=0if(!mysql_query($query1)){$rollback=1}if(!mysql_query($query2)){$rollback=1}if(!mysql_query($query3)){$rollback=1}if($rollback==1){mysql_query("ROLLBACK");}else{mysql_que

java - 打开 session 的 Hibernate 异常。我该如何调试呢?

我是hybernate的新手,我正在为以下异常而苦苦挣扎:Exceptioninthread"AWT-EventQueue-0"org.hibernate.HibernateException:illegallyattemptedtoassociateaproxywithtwoopenSessions当我试图删除一个对象(一个订单)时,我得到了这个。我的设置/代码:Order.hbm.xmlsession持有者:publicclassDBSession{privatestaticSessionFactorysessionFactory;static{Configurationcfg=n

Mysqldump --single-transaction 选项

有人能解释一下mysqldump--single-transaction实际上是如何用于事务表的吗,比如InnoDB?我看过官方documentation但仍然没有胶水。它是否像--lock-tables那样执行每个表锁定而不是全局锁定?此外,mysqldump运行--opt作为默认选项,其中包括--lock-tables,但它们与--single-transaction如上面的文档链接中所述。在单个mysqldump命令中使用--single-transaction时,我应该使用--skip-opt吗?我需要转储大小约为700Gb的InnoDB表,我正在寻找实现此目的的正确命令。目前

php - PDO/PHP/MySQL 中的性能 : transaction versus direct execution

我循环遍历多个值(例如1到100)并在循环内执行准备好的语句。与在循环内直接执行相比,使用事务(在循环结束后提交)是否有优势?这些值彼此不依赖,因此从这个角度来看不需要交易。 最佳答案 如果您的查询是INSERT,页面7.2.19.SpeedofINSERTStatementsMySQL手册的一部分提供了两个有趣的信息,具体取决于您是否使用事务引擎:使用非事务引擎时:TospeedupINSERToperationsthatareperformedwithmultiplestatementsfornontransactionalta