Anda dapat melakukan pencocokan string untuk menguji setiap baris:
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;
Jadi misalnya, jika ORDER_PARTS_LIST adalah '123:456:789'
, INSTR akan menemukan kecocokan untuk id 123, 456 dan 789, tetapi bukan 124, 45 atau 8, misalnya.
Saat suku cadang dihapus dari pesanan, Anda akan memerlukan pemicu yang berbeda untuk NULL
bidang yang sesuai di 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;