gpt4 book ai didi

.net - 回滚对 MySql 中存储过程的调用

转载 作者:行者123 更新时间:2023-11-29 02:37:30 24 4
gpt4 key购买 nike

我有一个场景,我需要在多个数据库中插入、调用和删除一个存储过程。这是在 powershell 脚本中完成的。如果在脚本中进一步发生某些情况,我希望能够回滚存储过程所做的更改。

问题是我无法回滚存储过程所做的更改。存储过程几乎是 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()

最佳答案

Oracle 曾经在您每次发出 DDL 语句(例如 CREATE PROCEDURE、CREATE TABLE 或 DROP TABLE)时执行隐式 COMMIT。也许 MySQL 也这样做?我会检查它,特别是因为我们现在知道这是解决方案(请参阅上面评论的时间戳)。

关于.net - 回滚对 MySql 中存储过程的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com