Я могу использовать ЗАМЕНУ оператором Where в mysql?

Что-то как:

REPLACE INTO vips SET active = 0, inactive = 0 WHERE ip = 3494220867 AND proto = "https";
1
задан ThinkingStiff 1 February 2013 в 22:33
поделиться

1 ответ

Да, он работает точно так же, как более стандартный insert , поскольку, в конце концов, является эквивалентом delete / insert .

Подробнее см. здесь .


На основании вашего добавленного комментария:

После того, как я задал этот вопрос, мне пришло в голову, что я, вероятно, ищу что-то, что обеспечивает ту же функциональность, что и замена, но в обновлении. Я пытаюсь обновить активные и неактивные столбцы, если запись существует (если существуют ip и proto). Если столбцы ip и proto не соответствуют строке, он вставит ее. Запрос, который я предоставил в своем исходном сообщении, не работает.

Думаю, вы ищете команду INSERT ... ON DUPLICATE KEY UPDATE .

Будет предпринята попытка вставить данные и выполнить бит обновления , если строка уже существует.

Я не уверен, насколько хорошо это будет работать, если ip / proto не является первичным ключом. Возможно, вам придется вернуться к стандартному методу:

begin transaction.
try:
    insert data into table with default values.
catch exception violates_unique_constraint:
    do nothing.
update data in table with new values.
end transaction
2
ответ дан 2 September 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: