Что-то как:
REPLACE INTO vips SET active = 0, inactive = 0 WHERE ip = 3494220867 AND proto = "https";
Да, он работает точно так же, как более стандартный 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