具有两个表的 Oracle 触发器

Oracle Trigger with two tables

我想构建一个触发器来修复程序中的某种错误。 t2 中有不同的行,程序在 t1 中将选定的行合并在一起,并为它们提供一个 id。所以 t2 中的 n 行是 t1 中的 1 行。现在我想限制当 t2 中的客户不同时,您可以将 t2 中的多行放在一起。当发生这种情况时,触发器应该在 t1 的文本字段中写入一条消息。 到目前为止我得到了这个:

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。 有人知道我该如何解决这个问题吗?

问候

问题不清楚,但据我了解,您在 t2 -> t1 中存在多对一关系,并且当在 t2 上插入多行时,您希望在 t1 中插入一行。 t2 上的此 put 语句级触发器的解决方案,您需要为每个行关键字删除它;如果此记录在 t1 中是否可用,您还需要应用内部检查触发器。

您好,很抱歉回答晚了,问题不清楚。 我自己解决了这个问题。 我创建了一个带触发器的暂存 table,这对我来说很好用。

谢谢大家的意见。