diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/World/World.cpp | 10 | 
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();  | 
