Если вы хотите, чтобы у вас никогда не было одного и того же пользователя в одном и том же лобби дважды, вы должны добавить уникальное ограничение на комбинацию этих двух полей в таблице игроков (предполагая, что players
- это то, что связывает users
с lobbies
).
Получив это, вы можете использовать upsert :
INSERT INTO players (user_id, lobby_id, playing) VALUES (12, 41, 1) ON CONFLICT name_of_your_constraint UPDATE players.playing = 1;
Это создаст запись, но, если это невозможно, поскольку комбинация user
и lobby
уже существует, она просто помечает пользователя как играющего.