Вопрос о внутреннем соединении и первичных ключах в SQLite DB ⇐ IOS
-
Anonymous
Вопрос о внутреннем соединении и первичных ключах в SQLite DB
У меня есть вариант в моем приложении для добавления различных чипов в их сбор. Хотите добавить чипы, открывается окно, чтобы позволить им выбирать желаемый чип из отображаемого списка. Это запускает функцию Savethesupplies, показанную ниже. Сценарий, в котором возникает проблема.
Если игрок A добавляет чип за 50 долларов и экономит его. Затем более поздний игрок B пытается добавить чип за 50 долларов, он выносит ошибку «Ошибка 19: Уникальное ограничение не удалось: player_supplies_chips.supplyid_xref - во время выполнения вставки в player_supplies_chips (supplyid_xref, playerid_supply_xref, supply_count, supplype) значения (? ?) ". Таблица CrossReftable_Player2Supplies, которую текущий игрок уже сохранил. < /p>
func get_The_Supply_IDs()
{
the_Supply_IDs_Array.removeAll()
let crossRefTable_Player2Supplies = "Player_Supplies_\(supplyType)"
do {
try Database_GRDB.shared.databaseConnection!.read { db in
for theID in try Int64.fetchAll(db, sql: "SELECT SupplyID_XRef FROM \(crossRefTable_Player2Supplies) WHERE PlayerID_Supply_XRef = ?", arguments: [gPlayerID])
{
the_Supply_IDs_Array.append(theID)
}
}
} catch {
print("Couldn't get the_Supply_IDs_Array! \(VC_String) \(error)")
}
}
// MARK: - Save Supply
func saveTheSupplies()
{
let crossRefTable_Player2Supplies = "Player_Supplies_" + supplyType
let theCount = Int(counterFld_Outlet.text ?? "1") ?? 1
do {
try Database_GRDB.shared.databaseConnection!.write { db in
try db.execute(sql: "INSERT INTO \(crossRefTable_Player2Supplies) (SupplyID_XRef, PlayerID_Supply_XRef, Supply_Count, Supply_Type) VALUES (?, ?, ?, ?)",
arguments: [supplyID, gPlayerID, theCount, supplyType])
}
applySnapshot()
} catch {
let theString = "\(error)"
print("error", theString)
get_The_Supply_IDs()
if the_Supply_IDs_Array.contains(supplyID)
{
sendConfirmationAlert(theTitle: K.Titles.itemAlreadyExists, theMessage: K.Titles.editChangeQuanity, buttonTitle: K.Titles.ok)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -sqlite-db
У меня есть вариант в моем приложении для добавления различных чипов в их сбор. Хотите добавить чипы, открывается окно, чтобы позволить им выбирать желаемый чип из отображаемого списка. Это запускает функцию Savethesupplies, показанную ниже. Сценарий, в котором возникает проблема.
Если игрок A добавляет чип за 50 долларов и экономит его. Затем более поздний игрок B пытается добавить чип за 50 долларов, он выносит ошибку «Ошибка 19: Уникальное ограничение не удалось: player_supplies_chips.supplyid_xref - во время выполнения вставки в player_supplies_chips (supplyid_xref, playerid_supply_xref, supply_count, supplype) значения (? ?) ". Таблица CrossReftable_Player2Supplies, которую текущий игрок уже сохранил. < /p>
func get_The_Supply_IDs()
{
the_Supply_IDs_Array.removeAll()
let crossRefTable_Player2Supplies = "Player_Supplies_\(supplyType)"
do {
try Database_GRDB.shared.databaseConnection!.read { db in
for theID in try Int64.fetchAll(db, sql: "SELECT SupplyID_XRef FROM \(crossRefTable_Player2Supplies) WHERE PlayerID_Supply_XRef = ?", arguments: [gPlayerID])
{
the_Supply_IDs_Array.append(theID)
}
}
} catch {
print("Couldn't get the_Supply_IDs_Array! \(VC_String) \(error)")
}
}
// MARK: - Save Supply
func saveTheSupplies()
{
let crossRefTable_Player2Supplies = "Player_Supplies_" + supplyType
let theCount = Int(counterFld_Outlet.text ?? "1") ?? 1
do {
try Database_GRDB.shared.databaseConnection!.write { db in
try db.execute(sql: "INSERT INTO \(crossRefTable_Player2Supplies) (SupplyID_XRef, PlayerID_Supply_XRef, Supply_Count, Supply_Type) VALUES (?, ?, ?, ?)",
arguments: [supplyID, gPlayerID, theCount, supplyType])
}
applySnapshot()
} catch {
let theString = "\(error)"
print("error", theString)
get_The_Supply_IDs()
if the_Supply_IDs_Array.contains(supplyID)
{
sendConfirmationAlert(theTitle: K.Titles.itemAlreadyExists, theMessage: K.Titles.editChangeQuanity, buttonTitle: K.Titles.ok)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -sqlite-db
Мобильная версия