aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/World/World.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index da625cb5625..cd7d6cc3edd 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2787,19 +2787,21 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati
}
else
guid = banned->GetGUID().GetCounter();
-
+ //Use transaction in order to ensure the order of the queries
+ SQLTransaction trans = CharacterDatabase.BeginTransaction();
// make sure there is only one active ban
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN);
stmt->setUInt32(0, guid);
- CharacterDatabase.Execute(stmt);
+ trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_BAN);
stmt->setUInt32(0, guid);
stmt->setUInt32(1, duration_secs);
stmt->setString(2, author);
stmt->setString(3, reason);
- CharacterDatabase.Execute(stmt);
-
+ trans->Append(stmt);
+ CharacterDatabase.CommitTransaction(trans);
+
if (banned)
banned->GetSession()->KickPlayer();