Установите новое значение строки при вставке из инструкции select в Oracle SQLplus

#oracle #sqlplus

#Oracle #sqlplus

Вопрос:

Можно ли установить триггер для установки значения новой строки как результата инструкции select? Мой текущий синтаксис выглядит следующим образом, и он просто не работает:

 CREATE TRIGGER "BRAND_NEW_TRIGGER"
    BEFORE INSERT ON my_table
    FOR EACH ROW
BEGIN
    :NEW.column_one := (SELECT details_col FROM other_table WHERE property_id = :NEW.property_id);
END;
/
  

Я подделал детали приведенного выше кода, чтобы защитить безопасность моей компании, я знаю, что приведенный выше код не имеет особого смысла, но есть веская причина, по которой мне нужно извлекать и упорядочивать данные таким образом.

Ответ №1:

Вы можете выполнить select into

 select ot.details_col
  into :new.column_one
  from other_table ot
 where ot.property_id = :new.property_id;
  

Конечно, я бы сильно сомневался в модели данных, если это имеет смысл. Это сильно подразумевает, что у вас есть модель данных, нуждающаяся в некоторой нормализации.