Core/Guild: avoid data integrity problems wrapping delete+insert statements in a transaction

This commit is contained in:
hondacrx
2018-01-24 13:41:02 -05:00
parent 767b2d21b7
commit 9ec0599fa6
5 changed files with 76 additions and 61 deletions
+1 -1
View File
@@ -1706,7 +1706,7 @@ namespace Game
{
Guild guild = Global.GuildMgr.GetGuildById(result.Read<ulong>(0));
if (guild)
guild.DeleteMember(factionChangeInfo.Guid, false, false, true);
guild.DeleteMember(trans, factionChangeInfo.Guid, false, false, true);
}
Player.LeaveAllArenaTeams(factionChangeInfo.Guid);
+7 -4
View File
@@ -482,14 +482,17 @@ namespace Game
Guild.SendCommandResult(this, GuildCommandType.CreateGuild, GuildCommandError.Success, name);
SQLTransaction trans = new SQLTransaction();
// Add members from signatures
for (byte i = 0; i < signatures; ++i)
{
guild.AddMember(ObjectGuid.Create(HighGuid.Player, result.Read<ulong>(0)));
result.NextRow();
}
guild.AddMember(trans, ObjectGuid.Create(HighGuid.Player, result.Read<ulong>(0)));
SQLTransaction trans = new SQLTransaction();
// Checking the return value just to be double safe
if (!result.NextRow())
break;
}
stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_PETITION_BY_GUID);
stmt.AddValue(0, packet.Item.GetCounter());