Questions tagged «transactions»

一组相互关联的操作必须全部成功才能使它们中的任何一个成功。任何操作的失败都会导致事务中所有操作的回滚。

8
仅标记为回滚的事务:如何找到原因
我在@Transactional方法中提交事务时遇到问题: methodA() { methodB() } @Transactional methodB() { ... em.persist(); ... em.flush(); log("OK"); } 当我从methodA()调用methodB()时,该方法成功通过,并且我可以在日志中看到“确定”。但后来我明白了 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) …


1
Database.BeginTransaction与Transactions.TransactionScope
System.Transactions.TransactionScope和EF6和有什么不一样Database.BeginTransaction? 有人可以举一个很小的例子,或者只是解释一个明显的区别时使用哪个? PS:在我的项目中,我正在使用EF6。我已经阅读了文档,但并没有太大帮助。还查看了示例,但它们正在使用SqlConnection.BeginTransaction,现在MSDatabase.BeginTransaction在EF6中引入了此新功能。

3
Android数据库交易
我已经创建了一个数据库。我想做交易。SaveCustomer()包含多个语句,以便Customer, CustomerControl, Profile, Payment在那时将记录插入表中。 当用户调用 SaveCustomer()method时,该数据将进入这4个表。那么我该如何进行交易?如果一个表插入失败,则需要回滚所有内容。例如,当第3个表插入记录时出现错误,那么还需要回滚前两个表的插入记录。 看我的代码: public void saveCustomer(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); initialValues.put("CustomerName",customer.getName()); initialValues.put("Address",customer.getAddress()); initialValues.put("CustomerPID",strPID); initialValues.put("Date",strDateOnly); long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues); } 同样也有其他陈述。 DBAdpter的代码是: public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) { long n =-1; try { myDataBase.beginTransaction(); n = myDataBase.insert(tableName, …

3
如果发生错误,using语句会回滚数据库事务吗?
我在using语句中有一个IDbTransaction,但不确定在using语句中引发异常时是否会回滚它。我知道using语句将强制调用Dispose()...但是有人知道Rollback()是否也是如此吗? 更新:另外,我是否需要像下面一样显式调用Commit(),还是使用using语句来处理? 我的代码看起来像这样: using Microsoft.Practices.EnterpriseLibrary.Data; ... using(IDbConnection connection = DatabaseInstance.CreateConnection()) { connection.Open(); using(IDbTransaction transaction = connection.BeginTransaction()) { //Attempt to do stuff in the database //potentially throw an exception transaction.Commit(); } }

5
“ @Transactional”应放在哪里服务层或DAO
首先,可能是我要问一些以前已被问到并回答过的问题,但我无法找回搜索结果。一般而言(或到目前为止):)我们在服务层上定义事务注释,通常是Spring Hibernate Crud。 Controller-> Manager-> Dao-> Orm。 现在,我需要根据客户站点在域模型之间进行选择。假设客户端A使用我的域模型都很好,但是另一个客户端网站会给我一个Web服务而不是使用我们的域模型。 我应该替换哪一层。我认为必须是DAO,它将从Web服务获取我的数据并将其发送回去。即两个单独编写的DAO层,并根据情况插入。 我现在意识到,当我们放入@TransactionalService层时,我们一直在进行紧密的耦合(如果有这样的事情或者说没有松散的耦合)。这么多的大脑不会错,或者是(我对此表示怀疑)。 所以问题是“应该在哪里@Transactional放置服务层或DAO?” 服务层是否向下,我应该更换。

4
Laravel:使用try…catch与DB :: transaction()
我们都使用DB::transaction()多个插入查询。这样做时,应该将try...catch其放置在内部还是包裹起来?甚至有必要try...catch在交易出现问题时自动将交易失败的情况包括在内吗? try...catch包装交易的样本: // try...catch try { // Transaction $exception = DB::transaction(function() { // Do your SQL here }); if(is_null($exception)) { return true; } else { throw new Exception; } } catch(Exception $e) { return false; } 相反,DB::transaction()包装try ... catch: // Transaction $exception = DB::transaction(function() { // try...catch try { // …


3
实体框架6事务回滚
使用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 …


8
即使事务回滚,SQL身份(自动编号)也会增加
我有一个带有SQL插入SQL Server 2005数据库的.net事务。该表具有一个身份主键。 当事务内发生错误时,将Rollback()被调用。行插入将正确回滚,但是,下次我将数据插入表时,身份将增加,就好像从未发生过回滚一样。因此,本质上在同一性序列中存在缺口。有什么方法可以使该Rollback()方法回收丢失的身份? 我不是用正确的方法吗?

4
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;afterCOMMIT;或ROLLBACK; 如果是这种情况,我不理解http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable-认为具有隔离级别意味着存在事务,意味着应始终关闭自动提交功能? 并且,如果在开始事务和设置自动提交之间还有另一个差异(上述差异除外),那是什么?

11
NoSQL中的事务?
我正在寻找NoSQL来扩展数据库的替代方案。如果我想要对此类事物敏感的基于事务的事物,该怎么办?

5
LINQ to SQL中的TransactionScope与事务
LINQ to SQL中的经典事务处理模式之间有什么区别: using(var context = Domain.Instance.GetContext()) { try { context.Connection.Open(); context.Transaction = context.Connection.BeginTransaction(); /*code*/ context.Transaction.Commit(); } catch { context.Transaction.Rollback(); } } 与TransactionScope对象 using (var context = Domain.Instance.GetContext()) using (var scope = new TransactionScope()) { try { /*code*/ scope.Complete(); } catch { } }

4
PostgreSQL函数是事务性的吗?
PostgreSQL函数(例如以下函数)是否可以自动进行事务处理? CREATE OR REPLACE FUNCTION refresh_materialized_view(name) RETURNS integer AS $BODY$ DECLARE _table_name ALIAS FOR $1; _entry materialized_views%ROWTYPE; _result INT; BEGIN EXECUTE 'TRUNCATE TABLE ' || _table_name; UPDATE materialized_views SET last_refresh = CURRENT_TIMESTAMP WHERE table_name = _table_name; RETURN 1; END $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER; 换句话说,如果在函数执行期间发生错误,是否会回滚任何更改?如果这不是默认行为,如何使该函数具有事务性?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.