У меня есть таблица людей со столбцами: имя, фамилия, номер телефона, адрес. Возможно ли иметь функцию, которая при вставке проверяет, существует ли уже номер телефона, и если да, то вместо того, что пользователь пытался вставить, он вставляет существующие значения (first_name и last_name)? Это позволило бы вставить новый адрес, будут скопированы только существующие имя и фамилия. Это совершенно противоположно upsert, который обновит существующую строку. Ни у одного из этих столбцов нет ограничений.
Я пытался использовать IF EXISTS, но на самом деле я не знаю, как передать существующие значения в NEW. Он работает с фиксированными значениями, например, THEN NEW.first_name = 'Jack'.
BEGIN
IF EXISTS (SELECT 1 FROM people p WHERE p.phone_number = NEW.phone_number) THEN
NEW.first_name = ?;
END IF;
RETURN NEW;