Я не знаю ни одного чистого SQL-оператора, который бы делал именно то, что вы хотите. В большинстве сред для запуска SQL (например, DBI и т. Д.) Есть какой-то способ сообщить количество затронутых строк. Таким образом, вы можете выполнить обновление, и если оно не попадет ни в одну строку, выполните вставку.
Если это не вариант, сначала выполните обновление, а затем вставку. Если строка существует, обновление будет работать, и вставка не удастся при нарушении ключа. Если строка не существует, обновление не попадет ни в какие строки, и вставка должна завершиться успешно.