Tag: 事务

entity framework6事务回滚

用EF6你有一个新的交易,可以像这样使用: using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new PostAdditionalInformation() { PostId = (101), […]

事务标记为仅回滚:如何find原因

我在使用@Transactional方法提交事务时遇到问题: methodA() { methodB() } @Transactional methodB() { … em.persist(); … em.flush(); log("OK"); } 当我从methodA()调用methodB()时,方法成功通过,我可以在日志中看到“OK”。 但是,然后我得到 Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) […]

单个语句的交易是做什么的?

我了解一个事务如何协调一对更新。 我不明白的是在交易中包装单一的陈述,这是我所见过的90%。 实际上,在现实生活中,根据我的经验,find一系列逻辑上相关的交易,每个交易都包含在自己的交易中,但是整个交易并没有包含在交易中。 在MS-SQL中,在事务中包装单选,单更新,单插入或单删除有什么好处? 我怀疑这是迷信的编程。

SET autocommit = 1和mysql中的START TRANSACTION之间的区别(我错过了什么?)

我正在阅读关于MySQL的事务,我不确定我是否已经掌握了一些特定的东西,而且我想确定我正确地理解了这一点,所以在这里。 我知道交易应该做什么,我只是不确定我是否理解语句的语义。 所以,我的问题是,有什么不对,(如果是这样的话,有什么问题)与以下几点: 默认情况下,在MySQL中启用自动提交模式。 现在, SET autocommit=0; 将开始一个事务, SET autocommit=1; 会隐式提交。 有可能COMMIT; 以及ROLLBACK; ,在这两种情况下,自动提交仍然被设置为0(并且新的事务被隐式地启动)。 START TRANSACTION; 基本上会SET autocommit=0; 直到一个COMMIT; 或ROLLBACK; 发生。 换句话说, START TRANSACTION; 和SET autocommit=0; 除了START TRANSACTION; 相当于隐式添加一个SET autocommit=0; 在COMMIT;之后COMMIT; 或ROLLBACK; 如果是这样的话,我不明白http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable – 看作隔离级别意味着有一个事务,这意味着autocommit应该closures吗? 如果在开始交易和设置自动提交之间还有其他的区别(除了上面描述的那个),它是什么?

Threaded Django任务不会自动处理事务或数据库连接?

我已经设置Django在自己的线程中运行一些重复的任务,我注意到他们总是留下未完成的数据库连接进程(pgsql“空闲事务”)。 我查看了Postgres日志,发现交易没有完成(没有ROLLBACK)。 我尝试在我的函数上使用各种事务装饰器,没有运气。 我切换到手动事务pipe理,手动进行回滚,工作,但仍然离开进程“空闲”。 那么我打电话connection.close(),一切都很好。 但是我仍然想知道,为什么Django的典型事务和连接pipe理对于正在从主Django线程产生的这些线程化任务起作用呢?

将列添加到表中,然后在事务内部更新它

我正在创build将在MS SQL服务器中运行的脚本。 该脚本将运行多个语句,并且需要是事务性的,如果其中一个语句失败,则整体执行被停止并且任何更改被回滚。 在发出ALTER TABLE语句向表中添加列并更新新添加的列时,我无法创build此事务模型。 为了立即访问新添加的列,我使用GO命令来执行ALTER TABLE语句,然后调用我的UPDATE语句。 我面临的问题是我不能在IF语句中发出GO命令。 IF语句在我的事务模型中很重要。 这是我试图运行的脚本的示例代码。 另外请注意,发出一个GO命令,将会放弃@errorCodevariables,并且在使用之前需要在代码中声明这个variables(这不在下面的代码中)。 BEGIN TRANSACTION DECLARE @errorCode INT SET @errorCode = @@ERROR — ********************************** — * Settings — ********************************** IF @errorCode = 0 BEGIN BEGIN TRY ALTER TABLE Color ADD [CodeID] [uniqueidentifier] NOT NULL DEFAULT ('{00000000-0000-0000-0000-000000000000}') GO END TRY BEGIN CATCH SET @errorCode = @@ERROR END CATCH […]

animation片段和后面的堆栈

我无法使用或理解如何popupFragmentTransactions退后堆栈处理自定义animation。 具体来说,我希望它叫“出”animation,但似乎并不如此。 我有一个简单的方法来处理一个片段事务(FragmentTransaction),我添加一个片段,并应用自定义的过渡,以便它淡入/淡出。 我也将这添加到后退堆栈,以便用户可以使用后退button撤消该事务,实质上导航到添加片段之前的状态。 protected void changeFragment() { FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out); ft.add(R.id.fragment_container, new TestFragment()); ft.addToBackStack(null); ft.commit(); } 一切都很顺利,但是当用户点击后退button时,转换animation不会反转。 我期望的是,当片段被删除,它会使用淡出animation。 相反,它似乎popup(没有animation),然后容器似乎淡入。我不知道这正是发生的事情,但片段绝对不是淡出。 我的应用程序使用兼容性库来添加片段支持,但是我认为这也适用于Honeycomb(android-11)。 有谁知道我是否只是在这里做错了什么,或者如果我只是期待太多? 理想的情况下,我想animation的片段类似于(通过Xoom)Gmail如何通过点击一条消息,然后使用后退button向前移动。 最好不必重写后退button的function,并跟上我自己的片段状态,因为我可以有几个“交易”,我想退出,我不是重新发明车轮的粉丝。 另请向Android开发者小组提问: http : //groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9

Rails 3:如何在观察者中识别after_commit动作? (创build/更新/销毁)

我有一个观察员,我注册了一个after_commitcallback。 如何判断在创build或更新后是否被解雇? 我可以告诉一个项目被要求item.destroyed?销毁item.destroyed? 但#new_record? 自从该项目被保存以来不起作用。 我打算通过添加after_create / after_update来解决它,并执行像@action = :create内部@action = :create和检查@action在after_commit ,但似乎观察者实例是一个单身人士,我可能只是覆盖一个值, after_commit 。 于是我以一种更丑陋的方式解决了这个问题,把action放在一个基于after_create / update的item.id的地图上,并在after_commit上检查它的值。 真的很丑。 有没有其他的方法? 更新 正如@ tardate所说, transaction_include_action? 是一个很好的指示,虽然这是一个私人的方法,在观察者应该用#send访问。 class ProductScoreObserver < ActiveRecord::Observer observe :product def after_commit(product) if product.send(:transaction_include_action?, :destroy) … 不幸的是, :on选项在观察者中不起作用。 只要确保你testing了你的观察者的地狱(如果你使用use_transactional_fixtures查找test_after_commit gem),所以当你升级到新的Rails版本时,你会知道它是否仍然有效。 (testing3.2.9) 更新2 现在我使用ActiveSupport :: Concern和after_commit :blah, on: :create而不是观察者:: after_commit :blah, on: :create在那里工作。

如何创build一个LINQ to SQL事务?

我有一块代码涉及多个插入,但需要执行submitchanges方法之前,我完成插入其他表中,以便我可以获得一个Id。 我一直在通过互联网search,并不能find如何创build一个事务linq到SQL。 我已经把代码放在我想要交易发生的地方。 var created = false; try { var newCharacter = new Character(); newCharacter.characterName = chracterName; newCharacter.characterLevel = 1; newCharacter.characterExperience = 0; newCharacter.userUsername = userUsername; newCharacter.characterClassID = ccslst[0].characterClassID; //Open transaction ydc.Characters.InsertOnSubmit(newCharacter); ydc.SubmitChanges(); foreach (var ccs in ccslst) { var cs = new CharacterStat(); cs.statId = ccs.statID; cs.statValue = ccs.statValue; cs.characterID = newCharacter.characterID; ydc.CharacterStats.InsertOnSubmit(cs); } […]

事务隔离级别与表上的locking关系

我已经读了大约4个层面的隔离: Isolation Level Dirty Read Nonrepeatable Read Phantom Read READ UNCOMMITTED Permitted Permitted Permitted READ COMMITTED — Permitted Permitted REPEATABLE READ — — Permitted SERIALIZABLE — — — 我想了解每个事务隔离在表上的锁 READ UNCOMMITTED – no lock on table READ COMMITTED – lock on committed data REPEATABLE READ – lock on block of sql(which is selected by using […]