Core/Entities: Avoid unique key violations during character inventory saving for newly created items
This commit is contained in:
@@ -18357,7 +18357,7 @@ void Player::_SaveInventory(SQLTransaction& trans)
|
|||||||
{
|
{
|
||||||
case ITEM_NEW:
|
case ITEM_NEW:
|
||||||
case ITEM_CHANGED:
|
case ITEM_CHANGED:
|
||||||
stmt = CharacterDatabase.GetPreparedStatement(item->GetState() == ITEM_NEW ? CHAR_ADD_INVENTORY_ITEM : CHAR_REP_INVENTORY_ITEM);
|
stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_INVENTORY_ITEM);
|
||||||
stmt->setUInt32(0, lowGuid);
|
stmt->setUInt32(0, lowGuid);
|
||||||
stmt->setUInt32(1, bag_guid);
|
stmt->setUInt32(1, bag_guid);
|
||||||
stmt->setUInt8 (2, item->GetSlot());
|
stmt->setUInt8 (2, item->GetSlot());
|
||||||
|
|||||||
@@ -109,7 +109,6 @@ bool CharacterDatabaseConnection::Open()
|
|||||||
PREPARE_STATEMENT(CHAR_LOAD_ITEM_BOP_TRADE, "SELECT allowedPlayers FROM item_soulbound_trade_data WHERE itemGuid = ? LIMIT 1", CONNECTION_SYNCH)
|
PREPARE_STATEMENT(CHAR_LOAD_ITEM_BOP_TRADE, "SELECT allowedPlayers FROM item_soulbound_trade_data WHERE itemGuid = ? LIMIT 1", CONNECTION_SYNCH)
|
||||||
PREPARE_STATEMENT(CHAR_DEL_ITEM_BOP_TRADE, "DELETE FROM item_soulbound_trade_data WHERE itemGuid = ? LIMIT 1", CONNECTION_ASYNC)
|
PREPARE_STATEMENT(CHAR_DEL_ITEM_BOP_TRADE, "DELETE FROM item_soulbound_trade_data WHERE itemGuid = ? LIMIT 1", CONNECTION_ASYNC)
|
||||||
PREPARE_STATEMENT(CHAR_ADD_ITEM_BOP_TRADE, "INSERT INTO item_soulbound_trade_data VALUES (?, ?)", CONNECTION_ASYNC)
|
PREPARE_STATEMENT(CHAR_ADD_ITEM_BOP_TRADE, "INSERT INTO item_soulbound_trade_data VALUES (?, ?)", CONNECTION_ASYNC)
|
||||||
PREPARE_STATEMENT(CHAR_ADD_INVENTORY_ITEM, "INSERT INTO character_inventory (guid, bag, slot, item) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC)
|
|
||||||
PREPARE_STATEMENT(CHAR_REP_INVENTORY_ITEM, "REPLACE INTO character_inventory (guid, bag, slot, item) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC)
|
PREPARE_STATEMENT(CHAR_REP_INVENTORY_ITEM, "REPLACE INTO character_inventory (guid, bag, slot, item) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC)
|
||||||
PREPARE_STATEMENT(CHAR_DEL_INVENTORY_ITEM, "DELETE FROM character_inventory WHERE item = ?", CONNECTION_ASYNC)
|
PREPARE_STATEMENT(CHAR_DEL_INVENTORY_ITEM, "DELETE FROM character_inventory WHERE item = ?", CONNECTION_ASYNC)
|
||||||
PREPARE_STATEMENT(CHAR_ADD_ITEM_INSTANCE, "REPLACE INTO item_instance (itemEntry, owner_guid, creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, guid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC)
|
PREPARE_STATEMENT(CHAR_ADD_ITEM_INSTANCE, "REPLACE INTO item_instance (itemEntry, owner_guid, creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, guid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC)
|
||||||
|
|||||||
@@ -113,7 +113,6 @@ enum CharacterDatabaseStatements
|
|||||||
CHAR_LOAD_ITEM_BOP_TRADE,
|
CHAR_LOAD_ITEM_BOP_TRADE,
|
||||||
CHAR_DEL_ITEM_BOP_TRADE,
|
CHAR_DEL_ITEM_BOP_TRADE,
|
||||||
CHAR_ADD_ITEM_BOP_TRADE,
|
CHAR_ADD_ITEM_BOP_TRADE,
|
||||||
CHAR_ADD_INVENTORY_ITEM,
|
|
||||||
CHAR_REP_INVENTORY_ITEM,
|
CHAR_REP_INVENTORY_ITEM,
|
||||||
CHAR_DEL_INVENTORY_ITEM,
|
CHAR_DEL_INVENTORY_ITEM,
|
||||||
CHAR_ADD_ITEM_INSTANCE,
|
CHAR_ADD_ITEM_INSTANCE,
|
||||||
|
|||||||
Reference in New Issue
Block a user