diff --git a/Source/Framework/Database/Databases/LoginDatabase.cs b/Source/Framework/Database/Databases/LoginDatabase.cs index 32fe7984f..25abe5235 100644 --- a/Source/Framework/Database/Databases/LoginDatabase.cs +++ b/Source/Framework/Database/Databases/LoginDatabase.cs @@ -54,9 +54,8 @@ namespace Framework.Database PrepareStatement(LoginStatements.DEL_IP_NOT_BANNED, "DELETE FROM ip_banned WHERE ip = ?"); PrepareStatement(LoginStatements.INS_ACCOUNT_BANNED, "INSERT INTO account_banned (id, bandate, unbandate, bannedby, banreason, active) VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?, 1)"); PrepareStatement(LoginStatements.UPD_ACCOUNT_NOT_BANNED, "UPDATE account_banned SET active = 0 WHERE id = ? AND active != 0"); - PrepareStatement(LoginStatements.DEL_REALM_CHARACTERS_BY_REALM, "DELETE FROM realmcharacters WHERE acctid = ? AND realmid = ?"); PrepareStatement(LoginStatements.DEL_REALM_CHARACTERS, "DELETE FROM realmcharacters WHERE acctid = ?"); - PrepareStatement(LoginStatements.INS_REALM_CHARACTERS, "INSERT INTO realmcharacters (numchars, acctid, realmid) VALUES (?, ?, ?)"); + PrepareStatement(LoginStatements.REP_REALM_CHARACTERS, "REPLACE INTO realmcharacters (numchars, acctid, realmid) VALUES (?, ?, ?)"); PrepareStatement(LoginStatements.SEL_SUM_REALM_CHARACTERS, "SELECT SUM(numchars) FROM realmcharacters WHERE acctid = ?"); PrepareStatement(LoginStatements.INS_ACCOUNT, "INSERT INTO account (username, salt, verifier, reg_mail, email, joindate, battlenet_account, battlenet_index) VALUES(?, ?, ?, ?, ?, NOW(), ?, ?)"); PrepareStatement(LoginStatements.INS_REALM_CHARACTERS_INIT, "INSERT INTO realmcharacters (realmid, acctid, numchars) SELECT realmlist.id, account.id, 0 FROM realmlist, account LEFT JOIN realmcharacters ON acctid = account.id WHERE acctid IS NULL"); @@ -204,9 +203,8 @@ namespace Framework.Database SEL_ACCOUNT_BY_ID, INS_ACCOUNT_BANNED, UPD_ACCOUNT_NOT_BANNED, - DEL_REALM_CHARACTERS_BY_REALM, DEL_REALM_CHARACTERS, - INS_REALM_CHARACTERS, + REP_REALM_CHARACTERS, SEL_SUM_REALM_CHARACTERS, INS_ACCOUNT, INS_REALM_CHARACTERS_INIT, diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index 301460128..4f17a4089 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -547,12 +547,7 @@ namespace Game newChar.SaveToDB(loginTransaction, characterTransaction, true); createInfo.CharCount += 1; - stmt = DB.Login.GetPreparedStatement(LoginStatements.DEL_REALM_CHARACTERS_BY_REALM); - stmt.AddValue(0, GetAccountId()); - stmt.AddValue(1, Global.WorldMgr.GetRealm().Id.Index); - loginTransaction.Append(stmt); - - stmt = DB.Login.GetPreparedStatement(LoginStatements.INS_REALM_CHARACTERS); + stmt = DB.Login.GetPreparedStatement(LoginStatements.REP_REALM_CHARACTERS); stmt.AddValue(0, createInfo.CharCount); stmt.AddValue(1, GetAccountId()); stmt.AddValue(2, Global.WorldMgr.GetRealm().Id.Index); diff --git a/Source/Game/Server/WorldManager.cs b/Source/Game/Server/WorldManager.cs index 8d46b9f85..3fa624604 100644 --- a/Source/Game/Server/WorldManager.cs +++ b/Source/Game/Server/WorldManager.cs @@ -1959,20 +1959,11 @@ namespace Game uint Id = result.Read(0); uint charCount = result.Read(1); - SQLTransaction trans = new(); - - PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.DEL_REALM_CHARACTERS_BY_REALM); - stmt.AddValue(0, Id); - stmt.AddValue(1, _realm.Id.Index); - trans.Append(stmt); - - stmt = DB.Login.GetPreparedStatement(LoginStatements.INS_REALM_CHARACTERS); + PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.REP_REALM_CHARACTERS); stmt.AddValue(0, charCount); stmt.AddValue(1, Id); stmt.AddValue(2, _realm.Id.Index); - trans.Append(stmt); - - DB.Login.CommitTransaction(trans); + DB.Login.DirectExecute(stmt); } }