草庐IT

事务处

全部标签

Gorm 多个事务以删除旧的搜索条件

bg:=Db.Begin()UDebt:=make([]UserDebt,0)page,_:=strconv.Atoi(c.DefaultPostForm("page","1"))limit,_:=strconv.Atoi(c.DefaultPostForm("limit","20"))db:=Db.Model(&UDebt).Preload("User")start:=c.PostForm("start")ifstart!=""{db=db.Where("datetime>=?",start)bg=bg.Where("datetime>=?",start)}debts:=make([

mongodb - 带有重试的 Mongo go 驱动程序事务实现

我正在尝试在mongodb中构建具有重试功能的事务,类似于nodejs等其他驱动程序。这是我当前的实现ifsession,err=client.StartSession();err!=nil{returnerr}iferr=session.StartTransaction();err!=nil{returnerr}iferr=mongo.WithSession(ctx,session,func(scmongo.SessionContext)error{ifresult,err=collection.UpdateOne(sc,bson.M{"_id":id},update);err!=n

postgresql - Golang、postgres事务: pq: unexpected transaction status in a failed transaction

Go:v1.3db:postgres使用lib/pq我有一个更新postgres数据库的应用程序。postgres数据库是使用pgbouncer设置的。因此,通过事件连接,我有运行插入和更新的代码。这是插入代码:func(sitemap*SiteMapData)InsertSiteMap(dbConnection*sql.DB)(int64,error){tx,err:=dbConnection.Begin()iferr!=nil{l4g.Error("InsertSiteMap:couldnotbeingtransaction:%v",err)return0,err}result,e

postgresql - 事务执行后停留在pg_stat_activity状态

我对PostgreSQL和golang都很陌生。主要是,我试图了解以下内容:为什么我需要Commit语句来关闭连接和另外两个Close电话没用?也非常感谢有关我使用游标的正确/错误方式的指示。在下面的函数中,我使用了gorp要创建一个CURSOR,请逐行查询我的Postgres数据库并将每一行写入编写器函数:func(txn*gorp.Transaction,qstring,params[]interface{},myWriterfunc([]byte,error)){cursor:="DECLAREGRABDATANOSCROLLCURSORFOR"+q_,err:=txn.Exec

postgresql - 在 Golang 中使用 postgres 获取事务提交前的最后一个 ID

我有2个insert查询。在第二个insert查询中,我需要第一个insert返回id。我将这些查询作为事务处理,因为它们相互依赖。那么,是否有可能在Golang的postgres中提交事务之前获取最后插入的id。 最佳答案 Postgres支持returning关键字来选择插入的id:INSERTINTOYourTable(col1,col2)VALUES('Value1','Value2')RETURNINGid; 关于postgresql-在Golang中使用postgres获取事

mysql - 当 Golang 程序在进行数据库事务时终止,它可以回滚吗?

假设MariaDB兼容数据库(AWSAuroraRDS)具有默认设置,其中包括启用自动提交,如果Lambda函数在三秒后终止,则执行一个需要花费的事务超过五秒,例如tx,err:=h.db.Begin()iferr!=nil{log.WithError(err).Error("failedtostarttransaction")}res,execErr:=tx.Exec(fmt.Sprintf("UPDATEtesttableSETval=%dWHEREid=1;SELECTSLEEP(5.5);",time.Now().Unix()))ifexecErr!=nil{log.WithE

go - 在 Go 中使用事务

当用户注册时,我的应用会做两件事-将用户添加到数据库并发送验证电子邮件:...err:=collection("users").Insert(&u);iferr!=nil{WriteServerError(w,err)return}iferr=sendVerificationEmail(&u);err!=nil{WriteServerError(w,err)}...如果电子邮件没有被发送,我不想将用户添加到数据库中,如果用户没有被添加到数据库中,我也不想发送电子邮件(后者当然会被处理)按此顺序使用代码块)。假设Go支持事务,是否值得为这样的事情费心?如果是这样,那么有人可以给我一些关于

sql - 事务 SQL XQuery XML 查询

DECLARE@tProductTABLE([pProductId][smallint]IDENTITY(1,1)PRIMARYKEYNOTNULl,[ProductDetails][xml]NOTNULL)INSERT@tProduct([ProductDetails])VALUES(N'BlahblahBlahblahBlahblahBlahblahBlahblahBlahblahBlahblah.gifBlahBlah2.gifBlahblahBlahblahThe-Image-I-Want-1.gif')INSERT@tProduct([ProductDetails])VALU

windows - 在 Windows 上的 PostgreSQL 的单个事务中运行多个 SQL 文件

我正在尝试在PostgreSQL的单个事务中运行多个SQL文件。在Linux环境中,这实际上可以通过使用here-document来实现:psql-Upostgres-hlocalhost-dmydatabase但我无法在Windows环境中实现相同的目标。 最佳答案 将所有内容放在一个文件中,例如\ifile1.sql\ifile2.sql然后用-f参数调用psql。要强制执行单个事务,请使用--single-transactionpsql-Upostgres-hlocalhost-dmydatabase--single-tran

c# - 事务登记性能问题

我们有一个冗长的数据库操作。当我们使用enlist=true执行此操作时,需要29分钟才能完成。当我们使用enlist=false执行此操作时,只需15分钟即可完成。造成如此巨大性能损失的原因是什么?是不是和数据库服务器有关?我们如何避免它?请分享您的想法。数据库:SQLServer2005框架:.Net3.0 最佳答案 Howdoweavoidit?和Totalnumberofrowsinacsvfileis100000.在这种情况下,使用SqlBulkCopy将100,000行写入临时表(一个基本的独立表,不是事务表的一部分;没