我有一個場景,我需要在多個數據庫中插入,調用和刪除存儲過程。這是在PowerShell腳本中完成的。我希望能夠回滾由存儲過程所做的更改,如果在腳本中發生某些情況。在MySql中回撥存儲過程
問題是我無法回滾存儲過程所做的更改。存儲過程幾乎是6 KB,並進行了一些更新和插入,所以我想知道是否對於事務來說太多了。當只在交易中進行SP呼叫時,我可以將其回滾。
任何幫助將不勝感激。
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand('', $mysqlConn) $cmd.Transaction = $mysqlConn.BeginTransaction([System.Data.IsolationLevel]'ReadCommitted') $cmd.CommandText = [IO.File]::ReadAllText($mySqlStoredProcedurePath) [Void]$cmd.ExecuteNonQuery() $cmd.CommandText = "CALL storedProcedureX($startHierarchyId)" [Void]$cmd.ExecuteNonQuery() $cmd.CommandText = "DROP PROCEDURE IF EXISTS storedProcedureX" [Void]$cmd.ExecuteNonQuery() $cmd.Transaction.Rollback()
當您嘗試回滾時,您得到的錯誤是什麼?你使用的是什麼桌子類型? – David 2010-06-08 18:31:53
在測試腳本中運行時,我完全沒有收到任何錯誤消息。也許我應該嘗試直接在mysql中執行它,看看它是否是連接器。該表是InnoDb。 (剛剛編輯我的帖子關於'只回滾通話'部分,順便說一句)。 – Polymorphix 2010-06-08 18:36:23
似乎每當我包含SP的創建或刪除時,回滾都不會發生。我嘗試在與SP調用相同的事務中插入更小的更新,這似乎工作正常。感謝您的幫助! – Polymorphix 2010-06-08 18:38:07