问题描述
谢谢了!
解决方案
解决方案二:
不能同時改。如果你的數據修改動作具有原子性(也就是不可分割的),可以使用事務。上面所說的不能同時改,有兩個特例:a.如果要修改的不同表的字段之間具有級聯更新的主外鍵關係,那么當你修改主鍵時,外鍵會自動更新。b.觸發器,與主鍵鍵類似
解决方案三:
下面是msdn的一個使用事務的範列PrivateSubExecuteSqlTransaction(ByValconnectionStringAsString)UsingconnectionAsNewSqlConnection(connectionString)connection.Open()DimcommandAsSqlCommand=connection.CreateCommand()DimtransactionAsSqlTransaction'Startalocaltransactiontransaction=connection.BeginTransaction("SampleTransaction")'Mustassignbothtransactionobjectandconnection'toCommandobjectforapendinglocaltransaction.command.Connection=connectioncommand.Transaction=transactionTrycommand.CommandText=_"InsertintoRegion(RegionID,RegionDescription)VALUES(100,'Description')"command.ExecuteNonQuery()command.CommandText=_"InsertintoRegion(RegionID,RegionDescription)VALUES(101,'Description')"command.ExecuteNonQuery()'Attempttocommitthetransaction.transaction.Commit()Console.WriteLine("Bothrecordsarewrittentodatabase.")CatchexAsExceptionConsole.WriteLine("CommitExceptionType:{0}",ex.GetType())Console.WriteLine("Message:{0}",ex.Message)'Attempttorollbackthetransaction.Trytransaction.Rollback()Catchex2AsException'Thiscatchblockwillhandleanyerrorsthatmayhaveoccurred'ontheserverthatwouldcausetherollbacktofail,suchas'aclosedconnection.Console.WriteLine("RollbackExceptionType:{0}",ex2.GetType())Console.WriteLine("Message:{0}",ex2.Message)EndTryEndTryEndUsingEndSub
首先你要確定你是否需要使用事務,使用事務一般是你所有的操作必須是要么成功要么失敗的情況。