Представьте, что у меня есть таблица под названием «Настройки», отслеживающая предпочтения пользователей в отношении электронной почты. Он имеет следующие столбцы:
Теперь по умолчанию я считаю все типы электронной почты включенными, однако по разным причинам я не могу создать строку в таблице настроек для каждого пользователя сразу после регистрации, а только после того, как он изменит свои предпочтения.
Поэтому, когда пользователь отключает маркетинговые электронные письма, я хочу:
Вставьте новую строку, например: INSERT INTO settings (user_id, Marketing_emails, Security_emails, Handwriting_emails) VALUES (?,0,1,1,);
ИЛИ
Обновите существующую строку для пользователя, например: UPDATE settings SET Marketing_emails = 0 WHERE user_id = ?;
Есть ли способ объединить оба случая в одном запросе в MySQL, или мне нужно сначала выполнить отдельную проверку, существует ли строка для данного user_id, а затем выполнить один из двух запросов?
Представьте, что у меня есть таблица под названием «Настройки», отслеживающая предпочтения пользователей в отношении электронной почты. Он имеет следующие столбцы: [list] [*][code]preferences_id[/code] (первичный ключ)
[*][code]user_id[/code] (ссылка на таблицу user, не уникальна по разным причинам)
[/list] Теперь по умолчанию я считаю все типы электронной почты включенными, однако по разным причинам я не могу создать строку в таблице настроек для каждого пользователя сразу после регистрации, а только после того, как он изменит свои предпочтения. Поэтому, когда пользователь отключает маркетинговые электронные письма, я хочу: [list] [*]Вставьте новую строку, например: INSERT INTO settings (user_id, Marketing_emails, Security_emails, Handwriting_emails) VALUES (?,0,1,1,); ИЛИ
[*]Обновите существующую строку для пользователя, например: UPDATE settings SET Marketing_emails = 0 WHERE user_id = ?;
[/list] Есть ли способ объединить оба случая в одном запросе в MySQL, или мне нужно сначала выполнить отдельную проверку, существует ли строка для данного user_id, а затем выполнить один из двух запросов?