sql >> Database teknologi >  >> RDS >> Oracle

Oracle APEX Database Trigger - Problemer med at henvise til databasekolonner

Du kan lave strengmatchning for at teste hver række:

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;

Så for eksempel, hvis ORDER_PARTS_LIST er '123:456:789' , vil INSTR finde matcher for id'erne 123, 456 og 789, men f.eks. ikke 124, 45 eller 8.

Når dele fjernes fra en ordre, skal du bruge en anden trigger til NULL de relevante felter i 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;


  1. Sådan uploader og downloader du filer PHP og MySQL

  2. Brug af Jenkins med Kubernetes AWS, del 2

  3. Spring Data returnerer List<Object[]>

  4. Problem med symfony 1.49 og MySQL 5.5.8