Я хочу создать триггер, чтобы исправить какую-то ошибку внутри программы. В t2 есть разные строки, и программа объединяет выбранные вместе в t1 и дает им один единственный идентификатор. Таким образом, n-строки в t2 являются 1 строкой в t1. Теперь я хочу ограничить, что вы можете поместить несколько строк в t2 вместе, когда клиент в t2 отличается. Когда это произойдет, триггер должен написать сообщение в текстовом поле в t1. До сих пор я получил это:Oracle Trigger с двумя таблицами
create or replace
trigger multiple after insert on t1
referencing new as new
for each row
declare count1 number;
begin
select count(distinct t2.customer)
into count1
from t2
where trim(t2.id)= trim(:new.id);
if count1 >=2
then
:new.txt_field :='Please delete.';
end if;
end;
Но теперь есть проблема, то t2.id равна нулю в этой точке и будет обновляться шаг после в программе. Похоже, что программа вставляет объединенную строку в t1 с t1.id, а затем обновляет t2.id для каждой строки. Кто-нибудь понял, как я могу это решить?
Приветствие
Не могли бы вы объяснить свой сценарий некоторыми тестовыми данными? – user1
Почему бы не поставить триггер на t2? –
Структура @Chandonne ddl, необходимая для t1 и t2 –