Sie können String-Matching durchführen, um jede Zeile zu testen:
create or replace trigger "ORDER_PARTS_T1"
BEFORE
insert or update on "ORDER_TABLE"
for each row
begin
update PARTS_TABLE p
set p.ASSIGNED_ORDER_NUMBER = :new.ORDER_NUMBER
where instr(':' || :new.ORDER_PARTS_LIST || ':'
,':' || p.PART_NUMBER || ':') > 0;
end;
Also zum Beispiel, wenn ORDER_PARTS_LIST '123:456:789'
ist , findet INSTR Übereinstimmungen für die IDs 123, 456 und 789, aber beispielsweise nicht für 124, 45 oder 8.
Wenn Teile aus einer Bestellung entfernt werden, benötigen Sie einen anderen Trigger als NULL
die entsprechenden Felder in PARTS_TABLE
:
create or replace trigger "ORDER_PARTS_T1"
BEFORE
update on "ORDER_TABLE"
for each row
begin
update PARTS_TABLE p
set p.ASSIGNED_ORDER_NUMBER = NULL
where instr(':' || :new.ORDER_PARTS_LIST || ':'
,':' || p.PART_NUMBER || ':') = 0
and instr(':' || :old.ORDER_PARTS_LIST || ':'
,':' || p.PART_NUMBER || ':') > 0;
end;